Web Parts(定制)

(一)WebPartManager.DisplayMode 设置或者获取页面的显示模式分为五种:

1、BrowserDisplayMode "正常的"显示模式 无法编辑(最小化 关闭)

2、DesignDisplayMode    允许拖拽式布局编辑(可以在一个WebPartZone拖到另一个)

3、EditDisplayMode         允许编辑WebPart的外观及行为

4、CatalogDisplayMode  允许将Web Part添加在另外的页面上

5、ConnectDisplayMode 允许Web Parts之间进行通讯

可以将WebPartManager和dropDownList封装成一个自定义控件,方便以后使用,把以上几种显示模式加到DropDrowList中.

(二)区域类型  (Zone都是容器类控件,除WebPartZone外,其它控件需要放置相应Part才能起作用)

(1)WebPartZone 定义基本的页面显示内容

-在任何时间均显示

(2)其它区域允许页面可以被编辑

-根据显示模式有条件的进行显示

CatalogZone           允许用户在页面上添加Web Part

EditorZone              允许用户更改Web Part的属性及布局

ConnectionsZone    允许用户建立Web Part之间的通讯

CatalogZone:        允许Web Part可以交互式的进行添加,包含一个或多个CatalogPart控件(在页面中定义的未放在任何Zone中的web Part)

                                PageCatalogPart            显示页面上已经删除的Web Part的列表

                                DeclarativeCatalogPart   显示声明在<WebPartsTemplate>中的Web Part的列表          

                                ImportCatalogPart           允许从.WebPart文件中导入的Web Part

EditorZone              允许交互式的对Web parts进行更改,包含一个或多个EditorPart控件 

                                AppearanceEditPart        提供修改标题及其它界面相关属性的UI   

                                BehaviorEditorPart          提供修改行为属性的UI

                                LayoutEditorPart             提供修改Web Part的显示状态 区域及区域索引的UI

                                PropertyGridEditorPart    提供修改定制属性的UI

 

ConnectionsZone:

WebPartManager负责 初始化 和 管理Web Parts之间的通信。 web part通信分为:Provider 和 Consumer。

Provider是提供者 Consumer是使用者,即Provider提供数据 Consumer使用这些数据来改变一些东西,另外一个Provider可以有一个或多个Consumer,而Consumer只能有一个Provider.

这个控件比较抽象,先介绍静态接连的例子如下:

(1)建立一个新接口文件(ICountry.cs)

public interface ICountry
      {
       string GetCountry();
       } 

(2)建立一个用户自定义控件(Country),不要忘记在此类中继承接口ICountry

添加一个dropdownlist,里面包含有城市的名称中国、英国、美国,在后置代码中添入

public string GetCountry()//就是一个方法 得到dropdownlist所选项,此方法定义在接口里
     {
        return DropDownList1.SelectedValue;
     }
    [ConnectionProvider("Country", "CountryProvider")]//此处定义提供者     ProviderConnectionPointID为  “CountryProvider” 后面会提到ProviderConnectionPointID作用.
    public ICountry GetCountryInterface()
    {
        return this;
    }

(3)建立另一个用户控件(weather)

添加一个label控件,用于显示天气,在后置代码中添入

 [ConnectionConsumer("Country", "CountryConsumer")]//此处定义使用者ConsumerConnectionPointID为"CountryConsumer"

public void SetCountry(ICountry provider)
    {
        string country = provider.GetCountry();
        if (!string.IsNullOrEmpty(country))
        {
            Label1.Text = country;
        }
    }

之后在页面上建立两个webpartzone分别把两个自定义控件放到其中,此时打开WebPartManager 所在这页面源代码:在WebPartManager 代码间加入以下代码

    <asp:WebPartManager ID="WebPartManager1" runat="server">
    <StaticConnections>
        <asp:WebPartConnection ID="CountryWeather"
         ProviderID="Country1" ProviderConnectionPointID="CountryProvider"
         ConsumerID="weather1" ConsumerConnectionPointID="CountryConsumer">
    </StaticConnections>
    </asp:WebPartManager>

ProviderID为当前页面中提供者的那个自定义控件名,ConsumerID为当前页面中使用者的自定义控件名,ProviderConnectionPointID和ConsumerConnectionPointID为提供和使用者的连接ID,此时就完成了,这是静态建立连接的方法,

动态连接的方法,将上面源码中WebPartManager 中的源代码删除,在页面Degisn页面添加一个ConnectionsZone就可以使用动态连接了

 

 

Web Parts个性化

Web Parts的特性
1、自动保存相关Web Part的属性(布局、外观等)。用户不必每次打开浏览器都要重新设置。
2、自动保存标记为PersonalizableAttribute的自定义属性。有两种个性化方式。
(1)Per-User个性化:
string _stocks;
[WebBrowsable]
[Personalizable] //Personalizable关键字为每位用户保存自定义属性
public stirng Stocks
{
get{return _stocks;}
set{_stocks=value;}
}
(2)Shared Personalization-共享的个性化:
有时候不仅仅希望自己的自定义属性只有自己能看到,可以用Shared Personalization:
string _stocks;
[WebBrowsable]
[Personalizable(PersonalizationScope.Shared)]
public string Stocks
{
get{return _stocks;}
set{_stocks=value;}
}
3、提供个性化服务的API——PersonalizationAdministration类
4、Provider-based for flexible data storage
Web Parts个性化服务是基于Provider模式的,所谓的Provider在beta2版中有两种:
(1)AccessPersonalizationProvider(Access)
(2)SqlPersonalizationProvider(SQL Server)(默认使用)
此外,还可以使用自定义的Providers增加对其他数据源的支持。
使用Provider示例:
在web.config文件中:
<configuration>
<system.web>
<webParts>
   <personalization defaultProvider="AspNetSqlpersonalizationProvider"/>
</webParts>
</system.web>
</configuration>
这样,就可以把所有的个性化设置保存到sqlserver中。
导出Web Part
1、WebPart.ExportMode属性:
WebPartExportMode.None(默认)
WebPartExportMode.All
WebPartExportMode.NonSensitiveData
(1)导出所有属性
public class Mywebpart:webPart
{
public Mywebpart()
{
   ExportMode=webPartExportMode.All;
}
}
(2)导出所选择的属性
public class MyWebPart:WebPart
{
public MyWebPart()
{
   ExportMode=WebPartExportMode.NotSensitiveData;
}
//这个属性会被导出
[Personalizable(PersonalizationScope.User,False)]
public string ZipCode
{
   ……
}
//该属性会被导出
[Personalizable(PersonalizationScope.User,False)]
public string SocialSecurityNumber
{
   ……
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值