1.引言
sps2003是一个安全、可伸缩的企业级门户服务器。可以利用它将sharepoint 站点、信息和应用程序汇集到一个单一的门户位置,用户可以通过门户内容和布局进行个性化的定制,更快地找到相关信息。目前,许多企业和政府部门已开始基于sps2003服务在互联网上提供信息共享与应用服务,并构建跨企业的虚拟组织或虚拟企业,以实现大规模的资源共享。web part的自定义开发是实现基于sps2003上的复杂应用的关键,微软官方提供的web partforvs2003模版是开发web part的标准编程环境,但是非常可惜,它不提供web part开发的可视化界面,对于复杂界面的web part的开发,将是一件非常吃力的事情。用户控件包装器巧妙的利用web partforvs2003模版,通过web part的属性将用户控件载入页面,通过菜单编辑用户控件,通过web part的数据传递实现用户控件之间的数据传递。
2. 用户控件与web part的联系
asp.net为扩展服务器控件框架提供了两个抽象:用户控件和自定义控件。
用户控件实质上是可插入其他页面中的 asp.net 页面,它们在一定程度上类似于传统 asp 中使用的 include 文件。使用 visual studio .net,可以使用将控件拖到页面设计器的方式,将服务器控件拖到用户控件设计器上,从而轻松地构建用户控件。
asp.net自定义控件实质是一个从system.web.ui.control直接或间接继承于的类,它不受visual studio .net中图形工具的支持。可以通过覆盖system.web.ui.control的createchildcontrols 方法,往自定义控件中添加服务器控件,定义其属性和事件。然后覆盖control类的render方法(直接继承于control类)或覆盖webcontrol类的rendercontent方法(继承于webcontrol类),编写自己的代码来发出 html.
web part是sps2003网站上的基本单元,它的概念类似于asp.net自定义控件,自己开发的web part将从microsoft.sharepoint.web partpages.webpart类继承,也是间接的继承了system.web.ui.control类。一样可以通过覆盖system.web.ui.control的createchildcontrols方法,添加服务器控件,定义其属性和事件。然后覆盖webpart类的renderwebpart方法,编写自己的代码发出html.
web part可以通过添加子控件的方式将用户控件和自身相联系,需要定义的大量用户界面和业务事件在用户控件中完成,web part起着选择用户控件、编辑用户控件和传递用户控件数据的作用。
3. 用户控件包装器的具体实现
3.1用户控件的载入和属性编辑
用户控件的载入和属性编辑都借助了web part的属性和工具面板。web part的属性分为默认属性和自定义属性。默认属性对web part的外观(如标题,高度,宽度),布局(如所在web part区域,显示的次序)和更高级的控制(如是否允许关闭,是否允许区域更改及选择访问web part的群体)进行了设置,是web part自带的属性。自定义属性是用户自已定义的属性,便于更灵活的编辑web part.
工具面板由不同的tool part组成。
默认属性对应webparttoolpart类,自定义属性对应custompropertytoolpart类,这两个类都继承于toolpart类。webpart类的gettoolparts方法决定将哪些tool part显示在工具面板里。web part框架默认在该方法中将这两个类的实例写入toolpart数组中,这两个属性将被工具面板中对应的tool part所编辑。同理,创建继承于toolpart的类,就可以在工具面板中很好的控制web part中除了属性的内容。
3.1.1 用户控件的载入
用户控件的载入通过web part的自定义属性和工具面板实现。主要步骤如下:
(1) 将用户控件对应的dll文件放入sps2003的bin目录下,以待执行;
(2) 创建webpart的子类;
(3) 在子类中添加一个自定义属性,用于保存载入的用户控件的完整路径。
(4) 创建toolpart的子类;
(5) 将ascx文件放在sps2003的某个虚拟目录下,在toolpart子类中实现从该虚拟目录获取所有用户控件信息的方法;
(6) 在toolpart子类中实现一个返回一个字符串的方法,该字符串用于创建一个项值为用户控件完整路径,项的文本为用户控件名称或描述的下拉列表框;
(7) toolpart的子类覆盖虚方法rendertoolpart(htmltextwriter),将第7步得到的字符串传入并被htmltextwriter对象写到浏览器上,用于在工具面板中显示包含所有用户控件的下拉列表框;
(8) toolpart的子类覆盖虚方法applychanges(该虚方法用于用户点击工具面板中的“确定”或“应用”按钮时发生,将相应tool part中的值作编辑)将通过表单形式提交到服务器端的下拉列表框的选中值传给相应web part的保存用户控件路径的自定义属性,通过该属性载入用户控件;
(9) webpart的子类覆盖虚方法gettoolparts,在该方法中返回的toolpart数组中加入第4步创建的类的实例;
(10) webpart的子类覆盖虚方法createchildcontrols,将载入的用户控件作为web part的子控件加入;
本网所刊转的与包装相关的信息和专题旨在传递更多行业信息之目的,版权均归著作权人或页面内声明的版权人所有。本站对中国包装网上刊登之所有信息不声明或保证其内容之正确性或可靠性,您于此接受并承认信赖任何信息所生之风险应自行承担。
为避免纠纷,未经书面协议授权,谢绝其他网站等有关信息服务企业予以转载使用。如果其他媒体、网站或个人转载使用,必须保留本网注明的“稿件来源”,并自负法律责任。
此外,在中国著作权法等有关法律规定允许的范围内,本网站有部分信息是从内容合作方、免费资源提供方转载、摘编获得的。在摘编网上稿件时,由于网络的特殊性,无法及时确认稿件作者并与作者取得联系。如果您发现本网站使用了您拥有著作权的作品并对我们的编辑方式有异议,请向我们提供您的身份证明及您对该作品拥有著作权的有关文件,我们会尽快根据中国相关法律妥善处理。
联系电话:0579-82057109