WalkThrough SharePoint WebPart 入门指南 五 blog.joycode.com 转载声明:此WalkThrough系列被转载和引用时,请保持博客堂链接。

Download Report

Transcript WalkThrough SharePoint WebPart 入门指南 五 blog.joycode.com 转载声明:此WalkThrough系列被转载和引用时,请保持博客堂链接。

WalkThrough
SharePoint WebPart 入门指南 五
blog.joycode.com
Kaneboy [MS MVP]
转载声明:此WalkThrough系列被转载和引用时,请保持博客堂链接。
Thanks.
此WalkThrough将演示
• 在两个WebPart之间交换数据
(Connectable WebPart)
背景知识
• 了解WebPart编程的一般知识,请阅读此
WalkThrough系列的前4辑。此
WalkThrough中将不对某些具体细节(部署
等)做详细描述。
一、了解Connectable WebPart
Provider WebPart
ICellProvider
Consumer WebPart
ICellConsumer
提供者可以向使用者
IRowConsumer
提供:
这个WebPart
一项数据(Cell)
做为数据使
IListConsumer
一行数据(Row)
用者
一个表的数据(List)
IFilterProvider 查询过滤器(Filter) IFilterConsumer
参数(Parameters)
IParametersInProvider
IParametersInConsumer
IRowProvider
这个WebPart
做为数据提IListProvider
供者
IParametersOutProvider
IParametersOutConsumer
★ Provider WebPart至少需要实现一个Provider接口
★ Consumer WebPart至少需要实现一个Consumer接口
★ Provider接口和Consumer接口(通过Transformer)不一定要一一对应
★ 位于不同页面的符合要求的WebPart也可以连接起来
二、创建Provider WebPart(一)
在VS.NET中建立一个类型
为“Web Part Library”,
名称为“SampleWebPart”
的项目。
将VS.NET自动创建的
WebPart1( WebPart1.cs、
WebPart1.dwp)删除。
如左图,新建一个
“Provider Web Part”,名
称为“CityProvider”
三、创建Provider WebPart(二)
如下图所示,VS.NET自动生成的CityProvider不但从
Microsoft.SharePoint.WebPartPages.WebPart继承,还实现了ICellProvider
接口。实现了ICellPrivider的WebPart可以提供给别的WebPart一项数据。
在自动生成的“EnsureInterfaces()”方法中,可以看到有一条调用
“RegisterInterface()”方法(包含8个参数)的语句,将其更改为:
RegisterInterface
("CellProvider_WPQ_",
"ICellProvider",
WebPart.UnlimitedConnections,
ConnectionRunAt.Server,
this,
"CellProviderInterface_WPQ_",
“提供一个城市名称给:",
“提供一项包含了城市名称的数据");
四、创建Provider WebPart(三)
在CityProvider中定义一个下拉框控件:
private DropDownList cityList = new DropDownList();
重写基类的“OnLoad()”方法,给下拉框绑定一些数据:
protected override void OnLoad(EventArgs e)
{
if (cityList.Items.Count == 0)
{
cityList.DataSource = new String[] {“北京”, “上海”, “深圳"};
cityList.DataBind();
}
this.Controls.Add( cityList );
cityList.AutoPostBack = true;
}
在已有的“RenderWebPart()”方法中,输出这个下拉框控件的内容:
protected override void RenderWebPart(HtmlTextWriter output)
{
cityList.RenderControl(output);
}
五、创建Provider WebPart(四)
在已有的“PartCommunicationMain()”方法中添加下面的代码,将开始添加
的下拉框控件中选中的项的数据传递出去。
public override void PartCommunicationMain()
{
if (CellReady != null)
{
// 创建要传递出去的数据
CellReadyEventArgs cellReadyArgs = new CellReadyEventArgs();
cellReadyArgs.Cell = cityList.SelectedItem.Text;
// 通过CellReady这个事件,将数据传递给使用者
CellReady( this, cellReadyArgs );
}
}
六、创建Consumer WebPart(一)
如左图,新建一个
“Consumer Web Part”,
名称为“CityConsumer”
七、创建Consumer WebPart(二)
如下图所示,VS.NET自动生成的CityConsumer不但从
Microsoft.SharePoint.WebPartPages.WebPart继承,还实现了ICellConsumer
接口。实现了ICellConsumer的WebPart可以从别的WebPart接收一项数据。
在自动生成的“EnsureInterfaces()”方法中,可以看到有一条调用
“RegisterInterface()”方法(包含8个参数)的语句,将其更改为:
RegisterInterface
("CellConsumer_WPQ_",
"ICellConsumer",
WebPart. LimitOneConnection,
ConnectionRunAt.Server,
this,
"CellConsumer_WPQ_",
"从...处接收一个城市名称",
"获取一项包含了城市名称的数据");
八、创建Consumer WebPart(三)
在已有的“CellReader()”方法中,接收Provider WebPart传送过来的数据,并
赋值给自动生成的Text属性:
public void CellReady(object sender, CellReadyEventArgs cellReadyArgs)
{
if(cellReadyArgs.Cell != null)
{
Text = "你选择的是:" + cellReadyArgs.Cell.ToString();
}
}
这个“CellReady()”方法会被SharePoint自动注册到(被连接起来的)
Provider WebPart的CellReady事件,参看第五步骤。这样Provider WebPart
就可以将数据通过CellReady事件传过来。
在自动生成的这个CityConsumer中,VS.NET会自动添加一个Text属性,并把
Text属性的值在“RenderWebPart()”方法中输出。所以我们这个演示无需手写
更多代码。
九、为两个WebPart创建部署文件
如右图,在项目中增加两个Dwp部署文件,分别命名
为“CityProvider.dwp”和“CityConsumer.dwp”。下
面分别是这两个Dwp文件的内容:
<?xml version="1.0" encoding="utf-8"?>
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" >
<Title>CityProvider</Title>
<Description>一个提供城市名称的WebPart</Description>
<Assembly>SampleWebPart</Assembly>
<TypeName>SampleWebPart.CityProvider</TypeName>
</WebPart>
<?xml version="1.0" encoding="utf-8"?>
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" >
<Title>CityConsumer</Title>
<Description>一个接收城市名称的WebPart</Description>
<Assembly>SampleWebPart</Assembly>
<TypeName>SampleWebPart.CityConsumer</TypeName>
</WebPart>
十、部署、连接两个WebPart
将两个WebPart部署到一个页面上,如左图。由于我
们尚未将它们连接起来,它们之间不会有任何数据的
交互。
点击页面右上角的“修改我的网页”,选择“设计此
网页”,进入当前页面的编辑状态。
如上图,点击CityProvider WebPart右上方的菜单按钮,选择“连接、提供一
个城市名称给:、CityConsumer”,将这两个WebPart连接了起来。
同样,也可以点击CityConsumer WebPart右上角的菜单按钮,选择“连接、
从…处接收一个城市名称、CityProvider”,来进行连接的操作。两者做其一即
可。
十一、连接WebPart的效果
如左图,将两个WebPart连接起来以后,
CityConsumer就可以接收到CityProvider选中的城市
的名称,来动态的输出接收到的数据。
从CityProvider的下拉框中选择“上海”这个选项。
可以看到CityConsumer根据接收到的新的数据更改了
输出内容。
十二、To Be Continued…
blog.joycode.com
Kaneboy [MS MVP]