WebPart学习(转)

如果说WebParts是web中一个非酷的效果的话,我想没有人会怀疑。WebParts为我们提供了对页中的对象
进行拖拽的功能,它也可以在runtime的时候改变对象的标题、边框样式等。在WebParts出现之前,
要实现这个功能是一项令人非常头痛的工作,因为我们必须写大量的JavaScrip,还要把页中每个对
象的状态保存到数据库中。

WebParts有两个基本的东东
    ·WebPartManager
    ·WebPart Zones
WebPartManager
WebPartManager用来管理所有的webparts。如果你想在你的web站点中使用webparts就必须要使用WebPartManager。
它的作用是提供你在页中进行拖拽的JavaScript代码
WebPart Zones
WebPart Zones中有4个zone
    ·WebPartZone
    ·EditorZone
    ·CatalogZone
    ·ConnectionZone
WebPartZone
WebPartZone是webparts里最基本的单位。通过在WebPartZone里放置不同的内容,我们就能够允许用户在页上
对其进行拖拽。你可以在你的页上增加一个DropDownList以实现使用不同zone的功能,该DropDownList的选项如下
    ·Browse
    ·Design
    ·Edit
    ·Catalog
    ·Connect
在DropDownList的SelectedIndexChanged事件里粘贴如下代码
(这里假设DropDownList的id是“cmbOptions”,WebPartManager的id是“WebPartManager1”)
if (cmbOptions.SelectedValue == "Design")
{
  WebPartManager1.DisplayMode = WebPartManager.DesignDisplayMode;
}
else if (cmbOptions.SelectedValue == "Browse")
{
  WebPartManager1.DisplayMode = WebPartManager.BrowseDisplayMode;
}
else if (cmbOptions.SelectedValue == "Catalog")
{
  WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayMode;
}
else if (cmbOptions.SelectedValue == "Edit")
{
  WebPartManager1.DisplayMode = WebPartManager.EditDisplayMode;
}
else if (cmbOptions.SelectedValue == "Connect")
{
  WebPartManager1.DisplayMode = WebPartManager.ConnectDisplayMode;
}
Browse mode
Browse mode是webparts的默认模式。在Browse mode中虽然我们不能拖拽webpart,
但是可以在webpart上看到两个选项,最小化和关闭。最小化一个webpart会显示它的最小化状态,
如果选择关闭的话我们就只能在Catalog mode下重新恢复它,稍后我们会讨论它。
Design mode
在Design mode中我们就可以在两个webpart对象间进行拖拽了。
Edit Mode
Edit Mode允许你在runtime中编辑webpart。编辑webpart是一个比较深层次的应用,它分为4个类型
:Appearance、Behavio、Property和Layout。我们首先来看看如何使用Appearance和LayoutEditorPart
Appearance和LayoutEditorPart
首先在web form上放置一个EditorZone。然后在EditorZone里放置一个AppearanceEditorPart和
LayoutEditorPart。运行这个程序,从DropDownList中选择编辑模式。在可用的webpart上单击菜单的编辑按钮。
你可以在这里改变webpart的标题。我们也可以看到编辑模式下的一些基本选项。镶边类型是边框和标题的样式。
镶边状态可以让你设置是否最小化它
PropertyGridEditorPart
通过使用属性编辑器我们可以改变webpart中对象的属性。在我们的例子中将示例如何改变对象的CssClass属性。
我们将用与解释AppearanceEditorPart和LayoutEditorPart相同的方法来说明它
在webform上放置一个EditorZone。然后在EditorZone里放置一个PropertyGridEditorPart。为了使用EditorZone
我们需要在你的项目里新增一个用户控件。在这个用户控件里放置一个TextBox,然后再把这个用户控件放到
web form的webpart里。该用户控件的后置代码如下
string _cssClass = "FrmTxtBox";
[WebBrowsable(), Personalizable(true)]
public string CssClass
{
  get { return _cssClass; }
  set { TextBox1.CssClass= value; }
}

protected void Page_Load(Object sender, EventArgs e)
{
  TextBox1.CssClass = CssClass;
}
上面的代码用于改变TextBox的CssClass属性。这个属性可以在webpart的编辑模式中修改,同时我们也可以在
runtime的时候改变它。此外我们也给CssClass附加了两个修饰属性
    ·WebBrowsable - 允许webpart在编辑模式中显示用户定义的属性
    ·Personalizable - 允许属性是可编辑的
现在运行这个页。如果我们设置了WebPartManager为编辑模式的话,就将会看到webpart的菜单选项中出现了编辑按钮。
在webpart的菜单中单击编辑按钮,就会看到编辑模式里有一个CssClass属性。
我们可以看到TextBox使用FrmTxtBox作为默认值(样式表的class)。这个样式把边框的颜色定义为黑色。
我们现在可以使用不同的样式class,比如我们有一个名为“CustomClass1”的样式class,它定义为没有边框。
输入这个值后按OK按钮,你将会看到新的边框样式
使用这种方法我们就可以改变webpart里对象的属性

Catalog mode
Catalog mode给我们提供了在运行时添加和移除webpart的选项。例如,如果我们有一些模块,如天气模块、
新闻模块、购物模块和占卜模块等等。如果想在运行时给用户提供显示和隐藏这些模块的选项,
我们就可以使用Catalog mode来完成这项任务。

CatalogZone
CatalogZone分为3个类型,分别是
PageCatalogPart、
DeclarativeCatalogPart
ImportCatalogPart。
在webform上增加一个CatalogZone,然后在CatalogZone内添加之前提到的3个类型。
当webpart被关闭后我们可以用PageCatalog来帮我们来显示webpart
PageCatalogPart用于显示被关闭的webpart列表。
DeclarativeCatalogPart用于显示该声明下的webpart列表。
ImportCatalog
ImportCatalog用来显示导入的webpart列表。我们可以导入扩展名为.WebPart的文件。
如果要导出类型为.WebPart的文件你需要在web.config增加如下元素
<webParts enableExport="true"></webParts>
然后我们有两种方法可以实现导出功能
设置控件的属性ExportMode的值为All。如果你的控件继承自WebPart就可以这么做,代码如下
<aspSample:CustomWebPart id="Sample" runat="server" ExportMode="All" />
或者在Page_Load里写如下代码
GenericWebPart gwp = WebUserControl2_1.Parent;
gwp.ExportMode = WebPartExportMode.All;
通过导入功能我们就可以增加任何webpart了
Connect mode
Connect mode允许各个webpart之间可以互相通信。用户可以依照他们的需要在运行时创建他们的连接。这个连接并
不是让webpart连接到数据库,而是webpart之间的互相连接。例如,如果有一个webpart里包含一个grid,它要根据
用户的输入显示相应的记录,而用户使用的TextBox在另一个webpart里,此时就要使用Connect mode发送数据。

在我们的例子里,我们将在一个页里放置两个webpart。一个负责用户输入,另一个负责显示。
在你的web站点里新建两个用户控件,分别命名为“Provider”和“Consumer”,并把它们放到相应的webpart里。
在App_Code文件夹里新建一个名为“ITextProvicer”的类。代码如下:
public interface ITextToPass
{
  string GetText();
}
我们会在Provider和Consumer两个用户控件中使用这个接口,以实现在这两个实体之间传送数据

在Provider用户控件里放置一个TextBox,并输入如下后置代码
public partial class ProviderWebPart : System.Web.UI.UserControl, ITextToPass

  [ConnectionProvider("TextToPass", "TextProvider")]
  public ITextToPass GetTextTransferInterface()
  {
    return ((ITextToPass)(this));
  }

  public string GetText()
  {
    return TextBox1.Text;
  }
}
你可以看到它实现了我们刚刚创建的ITextToPass接口。通过使用这个接口,我们可以返回用户输入的文本并传递
给Consumer用户控件。

下一步在Consumer用户控件里放置一个Label,并在.cs文件里添加如下代码
[ConnectionConsumer("Text", "TextConsumer")]
public void GetTextTransferInterface(ITextToPass provider)
{
  Label1.Text = provider.GetText();
}
现在选择WebPartManager的Connection mode,我们就可以在webpart的菜单上看到“连接”选项
webparts为我们提供了一个在运行时自定义web站点的简单方法。它是从SharePoint中提取出来,并引进到
asp.net 2.0中的。我们已经在本文中测试了它的一些基本用法,如使用不同类型的webpart和使用自定义数据库等等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值