Aimin Han

SharePoint Server、Office、Silverlight、Flash、GIS、AVEVA NET & solutions 培训 咨询 设计
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

TabsForAjax WebPart开发和部署简要说明[二]

Posted on 2008-07-15 10:35  aimin  阅读(560)  评论(0编辑  收藏  举报

这些文章中,关于部署时增加SafeControl等Web.Config配置,都不叙述了,需要了解的请查看相关资料。

在这一篇里,简要描述一下该解决方案:
前面已经描述了这个WebPart的应用场景,目的是减轻网站首页网络和查询的负担。
对SharePoint 插件式开发模式而言,表现层在加载每一个WebPart时,并非直接Access Assembly中的Webpart Class,即Assembly中的各种WebPart Class并不对表现层直接可见。表现层只能通过.webpart或.dwp这些XML文件来加载WebPart程序集部分的内容,.webpart和.dwp存储在Web部件库中的。

这意味着表现层需要使用工厂模式来管理和创建WebPart,这个工厂就是WebPartManager。当然直接使用WebPartManager来实现我们所需要的效果还有一些问题,文章后面有概要性的解释,详细可以查看一下源码。

TabsForAjax程序集中包括4个Class,分别是:TabsForAjax、MyUpdateProgress MyWebPartManager MyWebPartPersonalization 。

图中所示的TabImageButton已经废弃,原意是将每一个Tab封装以下,使其更加灵活易懂,后来觉得没有太大必要,有兴趣的可以重构一下代码:)。
TabsForAajx Class 继承自WebPart,用于生成和呈现Tabs及其当前激活的Tab的内容WebParts。
MyUpdateProgress Class是为了动态创建UpdateProgress的ProgressTemplete而集成ITemplete的实现。
MyWebPartManager 和 MyWebPartPersonlization 是为了解决默认安全许可下,不允许用户动态创建WebPart的限制, 由于WebPartManager的WebPartPersonalization只读,需要复写userCapabilities[WebPartPersonalization.ModifyStateUserCapability] =
                        WebPartPersonalization.ModifyStateUserCapability;

大体问题都解决了,于是就有了基本实现。