(一)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 显示声明在
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 代码间加入以下代码
ConsumerID="weather1" ConsumerConnectionPointID="CountryConsumer">
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文件中:
这样,就可以把所有的个性化设置保存到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
{
……
}