使用Web Part创建个性化的ASP.NET 2.0应用程序

发布时间: 2007-01-26 12:09    作者: 未知    来源: 未知    浏览:    评论

Web Parts 是Microsoft Visual Studio 2005 中的ASP.NET 2.0的新特性之一,Web Parts是构建类门户风格(Portal-Style)的应用的框架,它继承自SharePoint Portal Server的成熟模式,可以用最小的代码创建更丰富的表现,如用户可以使用拖拽的方式创建页面布局等。与它有关的控件都在System.Web.UI.WebControls.WebParts这个命名空间里。

  1. WebPartManager控件

    WebPartManager是Web Parts的总控中心。它可以管理Web Parts及区域的列表;管理页面状态,当页面状态改变时触发事件;协助Web Parts间的通讯;管理个性化等。
    每个页面仅有一个WebPartsManager实例,没有UI。

    1. <asp:WebPartManager ID="WebPartManager1" runat="server" />

     

    WebPartManger.DisplayMode
    设置或者获取页面的显示模式
    BrowserDisplayMode: “正常的”显示模式,无法编辑(默认)
    DesignDisplayMode: 允许拖拽式布局模式
    EditDisplayMode: 允许编辑Web Part的外观及行为
    CatalogDisplayMode: 允许将Web Part添加到另外的页面上
    ConnectDisplayMode: 允许Web Parts之间进行通讯

    DisplayMode事件
    当DisplayMode发生改变时,会触发WebPartManager.DisplayModeChanging事件,其参数WebPartDisplayModeCancelEventArgs获得新的显示模式,并且允许控制者取消这种改变。
    当DispalyMode已经发生改变,会触发WebPartManager.DisplayModeChanged事件,其参数WebPartDispalyModeEventArgs得到原来的显示模式。

  2. WebPartZone控件

     

    WebPartZone是在Web Parts页面中定义的区域,它定义每个区域中的Web Part的默认显示样式及布局。

    1. <asp:WebPartZone ID="WebPartZone1" runat="server">
    2.  <ZoneTemplate>
    3.  </ZoneTemplate>
    4. </asp:WebPartZone>

     

    Web Part Chrome则是Web Part的标题栏及边框,它是通过WebPartZone来定义其外观和操作的。

    在WebPartZone中可以定义各种控件如:Web controls, user controls, custom controls等等。未实现IWebPart接口的控件将封装进GenericWebParts,而且需要增加以下的属性,如Title, Description等。

  3. CatalogZone控件

     

    PageCatalogPart: 显示页面上已经删除的Web Part的列表
    DeclarativeCatalogPart: 显示声明在中的Web Part列表
    ImportCatalogPart: 允许.WebPart文件中导入的Web Part

    1. <asp:CatalogZone ID="CatalogZone1" runat="server">
    2.  <ZoneTemplate>
    3.   <asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
    4.   <asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1" runat="server">
    5.    <WebPartsTemplate>
    6.     <asp:Button ID="Button1" runat="server" Text="Button" />
    7.    </WebPartsTemplate>
    8.   </asp:DeclarativeCatalogPart>
    9.  </ZoneTemplate>
    10. </asp:CatalogZone>

     

    CatalogZone控件允许Web Part可以交互式的进行添加,可以包含一个或多个CatalogPart控件。
  4. EditorZone控件

     

    AppearanceEditorPart: 提供修改标题即其它界面相关属性的
    UIBehaviorEditorPart: 提供修改行为属性的
    UI LayoutEditorPart: 提供修改Web Part的显示状态,区域及区域索引的
    UIPropertyGridEditorPart: 提供修改定制属性的UI

    1. <asp:EditorZone ID="EditorZone1" runat="server">
    2.  <ZoneTemplate>
    3.   <asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
    4.   <asp:BehaviorEditorPart ID="BehaviorEditorPart1" runat="server" />
    5.   <asp:LayoutEditorPart ID="LayoutEditorPart1" runat="server" />
    6.   <asp:PropertyGridEditorPart ID="PropertyGridEditorPart1" runat="server" />
    7.  </ZoneTemplate>
    8. <asp:EditorZone>

     

    PropertyGridEditorPart允许修改自定义属性的UI,显示标记为[WebBrowsable]的属性。

    1. int myVar;
    2. [WebBrowsable]
    3. public int MyProperty
    4. {
    5.  get { return myVar; }
    6.  set { myVar = value; }
    7. }

     

    EditZone控件允许交互式的对Web Parts进行更改,可以包含一个或多个EditPart控件。
  5. Web Part通讯

     

    通讯的提供者需要实现方法返回接口,方法特性[ConnectionProvider]
    通讯的订阅者需要实现方法接收接口,方法特性[ConnectionConsumer]

    工作方式
    1.WebPartManager调用[ConnectionProvider]方法
    2.WebPartManager从返回参数中获得接口
    3.WebPartManager调用[ConnectionConsumer]方法将接口传递给订阅者
    4.订阅者用给定的接口也发布者通讯

    静态通讯方式
    在设计时就把WebPart之间相互通讯的关系在WebPartManager的StaticConnections元素中定义好了,最终用户无法修改。

    1. <asp:WebPartManager ID="WebPartManager1" runat="server">
    2.  <StaticConnections>
    3.   <asp:WebPartConnection ID="myConnection" ConsumerID="MyConsumer" ProviderID="MyProvider" ConsumerConnectionPointID="MyConsumerPoint" ProviderConnectionPointID="MyProviderPoint"/>
    4.  </StaticConnections>
    5. </asp:WebPartManager>

     

    动态通讯方式
    用ConnectionZone控件提供供Web Part进行通讯的UI。最终用户可以在运行时自定义绑定WebPart之间的通讯。

    1. <asp:ConnectionsZone ID="ConnectionsZone1" runat="server" />

     

    Web Part可以类似于事件的方式相互通讯,提供者发布接口,订阅者通过接口获得数据。而通讯之间的联系是由WebPartManger来管理的,它从提供者获得接口,向订阅者发布接口。通讯可以是静态的,在设计时就定义好,也可以是动态的,即在运行时由ConnectionsZone提供后期绑定的UI。
  6. Web Parts个性化

    使用Web Part个性化服务可以自动保存相关的Web Part的属性(布局,外观等等),还可以自动保存标记为PersonalizableAttribute的定制属性。

    在PersonalizationAdministration类里还提供了一系列有关个性化服务的API, 来供我们调用。

    还可以为每个用户提供各自的个性化服务,只需要把属性声明为[Personalizable]就可以了。

    也可以将属性声明为[Personalizable (PersonalizationScope.Shared)],这样的话,这个属性就可以被每个用户共享。

    Web Parts个性化服务是基于Provider模式的。Beta1的时候提供了两个Provider:
    AccessPersonalizationProvider(Access)
    AqlPersonalizationProvider(SQL Server)
    在Beta2中AccseePersonalizationProvider已经被移除了。
    也可以使用自定义Provider增加对其它数据源的支持。

    如使用SQL Server的Provider需要在Web.config文件中加入声明:

    1. <webParts>
    2.  
    3. <personalization defaultProvider="AspNetSqlPersonalizationProvider" />
    4. </webParts>

     

  7. 定制Web Parts

    任何控件均可以作为Web Parts来运行,但是最好是采用继承自WebPart的控件。这样可以得到更好的应用,如可以控制控件标题及其它与UI相关的属性,控件的AllowClose, AllowZoneChange, AllowMinimize和其它行为属性,可以应用于基于角色的安全特性,也可以增加一些自定义的操作,包括导出Web Part等等。

    增加自定义操作:

    1. public class MyWebPart : WebPart
    2. {
    3.  public override WebPartVerbCollection Verbs
    4.  {
    5.   get
    6.   {
    7.    EnsureChildControls();
    8.    WebPartVerb verb = new WebPartVerb(new WebPartEventHandler(OnClearResults));
    9.    verb.Text = "Clear Results";
    10.    WebPartVerb[] verbs = new WebPartVerb[] { verb };
    11.    return new WebPartVerbCollection(base.Verbs, verbs);
    12.   }
    13.  }
    14.  
    15.  void OnClearResult(object sender, WebPartEventArgs args){...}
    16. }

     

  8. 导出Web Part

    WebPart.ExprotMode属性

     

    WebPartExportMode.None (默认)
    WebPartExportMode.All 允许导出所有数据
    WebPartExportMode.NonSensitiveData 允许导出非敏感数据

    可以在构造函数中对Web Part的导出属性进行定义

    1. public MyWebPart()
    2. {
    3.  this.ExportMode = WebPartExportMode.All;
    4. }

     

    也可以选择某些属性被导出,在属性声明中定义即可。



TAG

Smile Big Smile Surprise Stick out tongue Wink Sad Tongue Tied Indifferent Crying Embarrassed Cool Angry Angel Devil [8-|] [:#] [:-*] [:^)] [<:o)] [|-)] Yes Beer Left Hug Music Star Time Snail Pizza Automobile Umbrella Computer Storm [mo] [8o|] [^o)] [+o(] [*-)] [8-)] Coffee No Drinks [Z] Right Hug Cake Broken Heart Gift Wilted Flower Movie Dog Idea Sleep Email Travel Paradise
呢称:

加粗 斜体 下划线 链接 图片 代码 邮件地址 引用 列表

最多只能输入100个字符

Tags

SQL 数据库 asp.net C# XML 控件 .NET教程 程序 事件 数据 安全 代码 Server 客户端 验证 数据库专栏 接口 文件 Oracle DataSet 函数 DataGrid 问题 .net return C#语言 JavaScript 服务 IIS 对象 语句 windows 继承 时间 web.config 设计 开发 参数 变量 解决 字符 ADO.net 环境 VB.Net语言 web 异常 工具 服务器 计算 实例 OLEDB Application VB Word WebService insert asp net 安装 记录

精华推荐

更多

精品下载

更多