日期:2011-08-20  浏览次数:20446 次

1.Web Part 通讯
Web Parts可以相互通讯,提供者发布接口,订阅者通过接口获得数据,WebPartManager 管理通讯,从提供者获得接口,向订阅者发布接口,通讯可以是静态的,也可以是动态的,ConnectionsZone 提供后期绑定的UI
通讯提供者
实现方法返回接口,方法特性 [ConnectionProvider]
[ConnectionProvider ("Zip Code", "ZipCodeProvider")]
public IZipCode GetZipCodeInterface ()
{
    return this; // Assumes control implements IZipCode
}

// IZipCode.GetZipCode implementation
public string GetZipCode ()
{
    return _zip;
}通讯订阅者
实现方法接收接口参数,方法特性 [ConnectionConsumer]
[ConnectionConsumer ("Zip Code", "ZipCodeConsumer")]
public void GetIZipCodeInterface (IZipCode provider)
{
    string zip = provider.GetZipCode (); // Get zip code from provider
     
}静态通讯方式
在 WebPartManager的 <StaticConnections> 元素中定义,最终用户无法修改
<asp:Connection>的实例
<asp:WebPartManager ID="WebPartManager1" Runat="server">
  <StaticConnections>
    <asp:Connection ID="ZipCodeConnection" Runat="server"
      ProviderID="Weather1" ProviderConnectionPointID="ZipCodeProvider"
      ConsumerID="News1" ConsumerConnectionPointID="ZipCodeConsumer" />
  </StaticConnections>
</asp:WebPartManager>2.ConnectionsZone 控件
提供供Web Part进行通讯的UI,最终用户,而不是开发人员创建通讯关系
<asp:ConnectionsZone ID="ConnectionsZone1"
  Runat="server" />3.Web Parts 个性化
Web Parts 个性化服务
自动保存相关Web Part的属性 (布局, 外观等等),自动保存标记为 PersonalizableAttribute的定制属性
PersonalizationAdministration 类提供个性化服务的API,Provider-based for flexible data storage
Per-User 个性化,[Personalizable] 为每位用户保存定制属性,string _stocks; // e.g., "MSFT,INTC,AMZN"
[WebBrowsable]
[Personalizable]
public string Stocks
{
    get { return _stocks; }
    set { _stocks =  value; }
}

Shared Personalization
[Personalizable (PersonalizationScope.-Shared)] persists properties on shared basis
string _stocks; // e.g., "MSFT,INTC,AMZN"

[WebBrowsable]
[Personalizable (PersonalizationScope.Shared)]
public string Stocks
{
    get { return _stocks; }
    set { _stocks =  value; }
}
个性化服务是基于Provider模式
使用 SQL Server Provider
<configuration>
  <system.web>
    <webParts>
      <personalization defaultProvider="AspNetSqlPersonalizationProvider" />
    </webParts>
  </system.web>
</configuration>4 定制Web Parts
增加自定义操作
public class MyWebPart : WebPart
{
    public override WebPartVerbCollection Verbs
    {
        get {
            EnsureChildControls ();
            WebPartVerb verb =
                new WebPartVerb (new WebPartEventHandler (OnClearResults));
            verb.Text = "Clear Results";
            WebPartVerb[] verbs = new WebPartVerb[] { verb };
            return new WebPartVerbCollection (base.Verbs, verbs);
        }
    }

    void OnClearResults (object sender, WebPartEventArgs args) {  }
 
}5.导出Web Part
WebPart.ExportMode属性,WebPartExportMode.None (默认),WebPartExportMode.All