Webpart的生命周期
1. 当一个包含WebPart的WSS站点页面被响应请求或者是它被提交到Server端的时候,这时WebPart生存周期开始了
2. OnInit 初始化,加载相关配置文件 (如WebPart任务面板上的属性,样式等配置信息) .
3. LoadViewState 返回先前最后一次被处理的状态(如webpart是展现,隐藏还是关闭)
4. CreateChildControls 创建WebPart UI,通过Controls.Add()方法装载Web控件(当Webpart是第一次展现的时候CreateChildControls方法发生在OnLoad方法之前,而经过一次postback之后,它发生在OnLoad方法之后)
5. OnLoad 从数据库或者其他系统重新获取要展现的数据(如获取数据库连接)
6. User-Generated Events 响应用户生成事件(如Button Click)
7. RendenContents 生成 html output,实现最终的UI展现(由HTMLTextWriterclass来实现)
8. SaveViewState 保存控件状态 (ViewState被序列化之后保存在一个hidden field里)
9. Dispose 从内存中移除对象,释放临界资源(如释放数据库连接)
10. OnUnLoad 最终完成内存清除工作
事件
OnInit 处理控件的初始化
OnLoad 处理控件的装载
CreateChildControls创建子控件
EnsureChildControls 确保CreateChildControls方法被调用,使用该方法来确保在访问控件的数据之前控件已经存在。
OnPreRender 处理在呈现控件之前必须完成的任务,例如数据装载。异步页面任务应该从该方法中被启动。
Page.PreRenderComplete在所有的控件都完成其OnPreRender方法并且页面已经完成了异步任务的执行之后,将会触发该事件。
Render 呈现整个控件,包括外部标签。
RenderContents 仅仅呈现控件在外部标签和样式属性内的内容。
Asp.net风格的webpart
开发步骤
1.打开VS2008或者VS2010,点击新建项目,选择“类库”项目,输入项目名称如:WebParts
2.修改类名称,如修改成:HelloWorld.cs
3.引用System.web,添加命名空间,将HelloWorld类继承:
System.Web.UI.WebControls.WebParts.WebPart,然后重写方法:RenderContents。该方法是将内容输出到控件上的。如:
则部署之后,界面将显示“HellWorld!”。
这只是一个简单的webpart,如果想要写控件,然后加载数据,可以在CreateChildControls中编写控件,然后将控件放入,Controls.Add(…),如果要加载数据则在OnPreRender方法中绑定数据,最后在Render方法中呈现整个控件。点击生成,则开发完成。
部署
1.将项目bin下的dll拷贝到要部署的站点(如80)的bin目录下。
2.修改80站点下web.config,在修改之前切忌备份(养成良好习惯)。
将该程序集添加为安全控件,添加内容如下:
Assembly:是程序集的名称
Namespace:程序集命名控件的名称。
TypeName=*:表示程序集中所有的类
Safe:是否安全控件
3.打开站点80,点击“网站设置”,以Sharepoint2010做示例。
4.选择库中的“we部件”,如:
5.你会看到很多webpart,如图:
这些都是页面上已经有的webpart,有系统自带的,有自己的。
.dwp的是WSS2.0下的。
.webpart的是WSS3.0及以上版本的。
6.点击“新建”项目,如:
找到刚刚我们添加的那个webpart,点击“导入库”,则webpart就会添加上。如:
7.到要添加该webpart的页面,点击“编辑页面”,选“插入”,找到“杂项”,就会看到刚刚添加的那个webpart,点击“添加”,则会在页面上看到。如:
完成了。。。很简单吧。。。
注:此例讲的是手工部署,是为了让读者更加明白部署的原理,还可以通过sharepoint模板建立项目,然后自动部署,其实最终的原理是一样的。
还需要说明的一点是,如果是自动部署,就一定要将 dll 放入 GAC 中 ( 要放入 GAC 中的话,就一定要有强命名 ) ,放入 GAC 中有个好处就是可以这样的话, dll 就可以被多个应用程序所用了