WebParts系列控件说明(转)

WebParts系列控件说明:

这里下载代码WebPartManager 控件:

Web Parts的总控中心,管理 Web Parts及区域的列表管理页面状态 (比如显示状态),当页面状态时发生改变时触发事件,协助Web Parts间的通讯,管理个性化等.

使用后的代码如下:

<asp:WebPartManager ID="WebPartManager1" RunAt="server" />

Ø   WebPartManager.DisplayMode设置或者获取页面的显示模式

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

Ø WebPartManager.DisplayModeChanging 指示显示模式是否要发生改变

WebPartDisplayModeCancelEventArgs    获得新的显示模式并且允许控制者取消这种改变

WebPartManager.DisplayModeChanged  指示显示模式是否已经发生改变
WebPartDisplayModeEventArgs               得到原来的显示模式

WebPartZone 控件:

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

使用后代码如下:

<asp:WebPartZone ID="WeatherZone"
  DragHighlightColor="244,198,96" RunAt="server">
  <PartTitleStyle BackColor="#2254B1" ForeColor="White" />
  <PartStyle BorderColor="#81AAF2" BorderStyle="Solid" BorderWidth="1px" />
  <ZoneTemplate>
    <!-- Web Parts declared here -->
  </ZoneTemplate>
</asp:WebPartZone>

 

Ø         Web Part Chrome标题框及Web Part的边框,通过 WebPartZone 定义其外观。

Ø         Web Parts
在 WebPartZone中定义的控件;Web controls, user controls, custom controls
未实现IWebPart接口的控件将封装进GenericWebParts
增加以下属性: Title, Description, etc.

使用后代码如下:
<ZoneTemplate>
    <asp:Calendar Title="Calendar" ID="Calendar1" RunAt="server" />
    <user:Weather Title="Weather" ID="Weather1" RunAt="server" />
    <custom:Search Title="Search" ID="Search1" RunAt="server" />
  </ZoneTemplate>

其它的区域类型

CatalogZone             允许用户在页面上添加Web Part
EditorZone               允许用户更改Web Part的属性及布局
ConnectionsZone     允许用户建立Web Part之间的通讯

 

CatalogZone 控件

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

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

 

EditorZone控件

允许交互式的对 Web parts进行更改,包含一个或者多个 EditorPart 控件
AppearanceEditorPart       提供修改标题及其它界面相关属性的UI
BehaviorEditorPart            提供修改行为属性的UI
LayoutEditorPart               提供修改Web Part的显示状态,区域及区域索引的UI
PropertyGridEditorPart     提供修改定制属性的UI,允许修改自定义属性的UI显示标记                             为[WebBrowsable]的属性

 

ConnectionsZone 控件

提供供Web Part进行通讯的UI,最终用户,而不是开发人员创建通讯关系

<asp:ConnectionsZone ID="ConnectionsZone1" Runat="server" />

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>

 

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>

定制Web Parts
任何控件均可以作为Web Parts来运行,但…
Controls that derive from WebPart can better leverage the Web Parts infrastructure
控件标题及其它与UI相关的属性
控件的AllowClose, AllowZoneChange, AllowMinimize, 以及其它行为属性
应用基于角色的安全特性 (授权方式)
增加自定义操作,导出Web Part以及更多..
增加自定义操作
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) { ... }
...
}
导出Web Part
WebPart.ExportMode属性
WebPartExportMode.None (默认)
WebPartExportMode.All
WebPartExportMode.NonSensitiveData
“All” 及 “NonSensitiveData” 增加导出操作以便Web Part可以被导出
仅[Personalizable] 属性
PersonalizableAttribute.IsSensitive识别 “sensitive” 属性
导出所有属性
public class MyWebPart : WebPart
{
public MyWebPart ()
{
ExportMode = WebPartExportMode.All;
}
...
}
导出所选择的属性
public class MyWebPart : WebPart
{
public MyWebPart ()
{
ExportMode = WebPartExportMode.NonSensitiveData;
}

// This property will be exported
[Personalizable (PersonalizationScope.User, false)]
public string ZipCode
{ ... }

// This one will not
[Personalizable (PersonalizationScope.User, true)]
public string SocialSecurityNumber
{ ... }
...
}

 

 

WebPartsDemo制作过程及相关技术说明

第一阶段 实现控件基本功能

1.首先使用vs.net 2005新建一个web站点 命名为WebPartsDemo;

 

 

2.建立一个页面作为实现该系列控件的载体。在页面上建立一个三行两列的表格,并合并三行单元格,将此作为webpart第二行之间通讯的订阅者显示部分,

 

 

3.向标题下放拖放一个WebPartManager控件,分别为每一个单元格里面拖放一个webpartzone控件。

 

 

4.向webpartzone1中拖放一个日历控件 设置webpartzone1部分属性值,并且选择合适的样式 将其title 设置为:Demo之日历控件,注意 日历控件本身没有title属性,但当一个控件加入到webpartzone区域中去后,则该控件被自动包装为GenericWebPart类型控件,这些类型的控件有title属性。

 

 

5.运行通过浏览器查看,至此一个最简单的webpart控件应用制作完成。

第二阶段在Webpart系列控件中,使用用户自定义的控件

1. 我们为工程项目增加一个"baidu.ascx"的控件(参照详细页面)

 

在btnsearch按钮的click事件中写入如下代码:

Response.Write(Page.IsValid);

        string strSearch = HttpUtility.UrlEncode(txtSearch.Text);

        Response.Redirect("http://www.baidu.com/s?wd="+ strSearch);
 2. 将写好的baidu.ascx控件,整个拖拉到我们刚才建立好的表格中webpartzone2中。

 

第三阶段 结合WebPartManager.DisplayMode设置获取页面的显示模式

设置页面显示模式

往页面适当位置拖放RadioButtonList控件 指定其内容分别为浏览模式、布局模式、个人化内容定制、模块编辑模式;并将其 Autopostback 设置为true

编写以下代码

protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)

    {

        switch (RadioButtonList1.SelectedIndex)

        {

            case 0:

                WebPartManager1.DisplayMode = WebPartManager.BrowseDisplayMode;

                break;

            case 1:

                WebPartManager1.DisplayMode = WebPartManager.DesignDisplayMode;

                break;

            case 2:

                WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayMode;

                break;

            case 3:

                WebPartManager1.DisplayMode = WebPartManager.EditDisplayMode;

                break;

            default:

                break;

        }

}

 

结合显示模式添加webpart系列控件

1.往窗体中拖拉一个catlogzone控件

2、往该catlogzone控件区域中,再拖放三个Webpart系列的控件,分别是DeclarativeCatalogPart, PageCatalogPart, and ImportCatalogPart。DeclarativeCatalogPart控件的作用是,显示目前页面上有哪些可以用的webpart控件;PageCatalogPart的作用是,可以让用户通过勾选的方式,选定将哪些控件添加转移到其他webpart区域中去。ImportCatalogPart则可以通过外部磁盘文件的方式,加载其他做好了的webpart部件。

 

3.向DeclarativeCatalogPart的摸板中添加baidu.ascx控件

4.修改DeclarativeCatalogPart, PageCatalogPart, and ImportCatalogPart。控件部分属性

5.为了在运行过程中用户能够动态的修改webpart的部分属性我们向页面添加一个editor zone的区域控件,往其中再拖放一个appearanceEdiotrPart控件。

至此demo的浏览模式和设计模式及目录编辑模式,webpart编辑模式制作完成。

第四阶段:webpart之间的通讯

1,首先创建两个用户控件作为webpart,一个作为数据的提供者(provider.ascx),另外一个作为数据的订阅者(Consumer.ascx)

2,定义接口

3,在提供者中实现接口成员

4,在提供者中实现[ConnectionProvider]方法

5,在订阅者中实现[ConnectionConsumer]方法

6,在WebPartManager控件中声明连接

详细代码及制作过程请参阅Demo

 

第五阶段:自定义webpart

1.以编程方式将Web部件添加到 WebPartZone 控件里面的方法取决于需要添加的Web部件的类型。如果是一个从 WebPart 继承的类,需要以编程方式创建一个 该类的实例,然后调用 WebPartManager 类的 AddWebPart 方法。调用 AddWebPart 方法时,你需要传入的参数包括:Web部件的实例、 目标 WebPartZone 控件、以及Web部件在 WebPartZone 控件中的索引位置。

首先 建立一个从WebPart继承的类

代码如下:

using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
 
 public class HelloWorld : WebPart {
 
    public HelloWorld() {
      this.Title = "Hello World";
      this.TitleIconImageUrl = @"img/WhaleBoy.gif";
    }
 
    protected override void RenderContents(HtmlTextWriter writer) {
      writer.Write("Can I have your attention please");
    }
 }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值