SharePoint 自定义WebPart之间的连接

  1、创建SharePoint解决方案,添加两个WebPart分别用来发送和接收;

  2、发送值的WebPart需要继承自IWebPartField(当然,根据需要还可以选择IWebPartField,IWebPartParameters,IWebPartRow,IWebPartTable,具体参见msdn),原理是将需要发送的值,放到一个接口实例里;

  public class SendWebPart : WebPart, IWebPartField

  详细代码:

 1 private TextBox tb;
 2 private Button btn;
 3
 4 protected override void CreateChildControls()
 5 {
 6     tb = new TextBox();
 7     Controls.Add(tb);
 8     btn = new Button();
 9     btn.Text = "Send";
10     Controls.Add(btn);
11 }
12 //创建一个接口实例
13 [ConnectionProvider("Send", AllowsMultipleConnections = true)]
14 public IWebPartField SendObject()
15 {
16     EnsureChildControls();
17     return this;
18 }
19
20 //将数据callback到接口实例
21 public void GetFieldValue(FieldCallback callback)
22 {
23     EnsureChildControls();
24     callback(tb.Text);
25 }
26 // Schema 属性返回 PropertyDescriptor 对象所封装的数据字段的架构信息
27 public System.ComponentModel.PropertyDescriptor Schema
28 {
29     get { return null; }
30 }

  3、接受数据的WebPart,原理就是在render之前去共享的接口实例中获取值,然后使用;

 1 private Label lbl;
 2 private IWebPartField provider;
 3
 4 protected override void CreateChildControls()
 5 {
 6     lbl = new Label();
 7     Controls.Add(lbl);
 8 }
 9 //检索接口实例
10 [ConnectionConsumer("GetObject")]
11 public void RecvObject(IWebPartField prov)
12 {
13     provider = prov;
14 }
15 //获取接口实例中的数据
16 private void GetData(object fieldValue)
17 {
18     lbl.Text = Convert.ToString(fieldValue);
19 }
20 //在Render前去接口实例获取值
21 protected override void OnPreRender(EventArgs e)
22 {
23     if (provider != null)
24         provider.GetFieldValue(new FieldCallback(GetData));
25     base.OnPreRender(e);
26 }

  4、部署WebPart,然后连接,如下图:

  5、查看效果

  点击Send前,只能看到页面上的两个webpart,如下图:

  在TextBox中输入值,点击Send,刷新页面,TextBox中的值已经从SendWebPart中发送到ReceiveWebPart中了,两个自定义WebPart连接成功!

  在完成了两个自定义WebPart连接以后,自己还想过连接SharePoint自带的WebPart,但是由于时间关系,还没有发现如何连接,有成功的希望可以给我留言~~~谢谢~~

  此接口旨在用于 Web 部件连接。在 Web 部件连接中,位于 WebPartZoneBase 区域中的两个服务器控件建立一个连接并共享数据,其中一个控件充当使用者,另一个控件充当提供者。Web 部件连接中共享数据的机制是接口实例,提供者通过使用回调方法将其提供给使用者。若要建立连接,使用者和提供者必须同时使用同一接口类型共享数据。如果使用者无法识别由提供者发送的接口类型,还可以通过使用转换器(WebPartTransformer 对象)连接控件,转换器可将提供者发送的接口实例转换为使用者可以识别的类型。有关连接的详细信息,请参见 WebPartConnection 和 Web 部件连接概述。

  IWebPartField 接口是 Web 部件控件集中所包含的一个提供者接口,用作基于数据字段创建连接的标准接口。您也可以创建自定义接口以用于 Web 部件连接,但在由数据驱动的许多 Web 应用程序中,使用 IWebPartField 接口基于数据源中的公共行(有关详细信息,请参见 IWebPartRow 接口)、表(有关详细信息,请参见 IWebPartTable 接口)或字段创建连接是很有用的。在典型连接中,充当提供者的 WebPart 控件将实现 IWebPartField 接口并用特殊的回调方法将该接口的实例提供给使用者。例如,提供者可以为用户信息表中包含 Web 用户邮政编码数据的字段实现 IWebPartField 接口。另一个充当使用者的 WebPart 控件则定义一个特殊的方法来接收该接口实例,然后可以提取邮政编码数据,根据该邮政编码查询并显示天气信息。

  IWebPartField 接口有两个公开的成员。Schema 属性返回 PropertyDescriptor 对象所封装的数据字段的架构信息。GetFieldValue 方法声明一个方法,在调用回调方法时,实施者(如提供者控件)使用该方法检索接口实例的字段数据。

参考链接

  http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webparts.iwebpartfield(v=VS.80).aspx

时间: 2024-11-10 12:11:10

SharePoint 自定义WebPart之间的连接的相关文章

网站自定义-SharePoint自定义网站定义中的onet.xml 和webtemp.xml 文件如何配置?

问题描述 SharePoint自定义网站定义中的onet.xml 和webtemp.xml 文件如何配置? 问题1: onet.xml 可以设置网站的导航栏,msdn文件上的都是什么意思?哪些东西是需要自己替换的?怎么样替换?同样的怎么添加自定义的webpart?这个是主要问题. 问题2: 顺便问一下webtemp.xml怎么使用?给力比较全面的例子最好是.网上查过相关的资料,都是复制粘帖的msdn上面的东西,不明白啊. 希望懂的会用的老师,前辈帮下忙.刚刚接触这个东西,很菜很菜的那种. 谢谢!

Cisco交换机之间的连接方法

对于交换机之间的连接,比较熟悉的应该有两种:一.是堆叠,二.是级联.对于级联的方式比较容易造成交换机之间的瓶颈,而虽然堆叠技术可以增加背板速率,能够消除交换机之间连接的瓶颈问题,但是,受到距离等的限制很大,而且对交换机数量的限制也比较严格. Cisco公司推出的交换机集群技术,可以看成是堆叠和级连技术的综合.这种技术可以将分布在不同地理范围内的交换机逻辑地组合到一起,可以进行统一的管理.具体的实现方式就是在集群之中选出一个Commander,而其他的交换机处于从属地位,由Commander统一管

ORACLE执行计划:表之间的连接

四.表之间的连接 Join是一种试图将两个表结合在一起的谓词,一次只能连接2个表,表连接也可以被称为表关联.在后面的叙述中,我们将会使用"row source"来代替"表",因为使用row source更严谨一些,并且将参与连接的2个row source分别称为row source1和row source 2.Join过程的各个步骤经常是串行操作,即使相关的row source可以被并行访问,即可以并行的读取做join连接的两个row source的数据,但是在将表

蓝牙连接-请教大神们,如何实现手机蓝牙和其他蓝牙设备之间的连接

问题描述 请教大神们,如何实现手机蓝牙和其他蓝牙设备之间的连接 我想做一个小程序,手机蓝牙连接其他蓝牙设备的,现在做到将附近的蓝牙设备找到并显示.后面就不会做了,求指导 解决方案 手机和蓝牙都要相互设置配对 解决方案二: 这里有你要的http://www.cnblogs.com/tnxk/archive/2012/02/28/2372479.html

android与mysql数据库之间的连接?

问题描述 android与mysql数据库之间的连接? 现在要做一个人口管理系统,android界面也做好了,mysql数据库也做好了,就是不知道这直接用什么方法来连接.求大神告诉我怎么连接比较好,谢谢了. 解决方案 应该在你的服务器上去连mysql,然后你的 android 通过 web service 去连你的服务器,而不是直接连数据库. 解决方案二: 应该在你的服务器上去连mysql,然后你的 android 通过 web service 去连你的服务器,而不是直接连数据库. 解决方案三:

Linux中使用ln命令在文件之间建立连接的用法讲解

  在Unix世界里有两个'link'(连接)概念,一般称之为硬连接和软连接.一个硬连 接仅仅是一个文件名.(一个文件可以有好几个文件名,只有将最后一个文件名从 磁盘上删除,才能把这个文件删掉.文件名的个数是由ls(1)来确定的.所有的文件 名都处于同一个状态,也就没有什么lq源名字rq 之说.通常文件系统里的一个 文件的所有名字包含着一样的数据信息,不过这样也不是必需的.)一个软连接 (或符号连接)是完全不同的:它是一个包含了路径信息的小小的指定文件.因此, 软连接可以指向不同文件系统里的文件

如何跨多个MPLS提供商之间建立连接?

如果你的企业正在并购:你如何确保在不同的广域网服务提供商之间建立持续连接呢? Robert Sturt:如果企业被收购或者与其他公司合并,就很有可能需要重新考虑他们的广域网(WAN)基础设施.尽管MPLS(多协议标签交换)提供商已经投入重金扩展了他们的网络.但是,合并企业或者收购企业还是要面对一个事实,就是他们需要处理多个服务提供商之间不同的MPLS和虚拟专用LAN服务需求. IT团队可以使用一种方法:VPN互联,也叫做DIY互联(do-it-yourself,手动)或者VPN网络到网络互联.

SharePoint 2013 WebPart 管理工具分享[开源]

前言 之前做门户的时候,经常要导入导出WebPart,非常的频繁,然后就需要一个个导出,然后一个个导入,非常繁琐:闲暇之际,就考虑能不能自动化一下,把这个功能写成一个工具,可以方便的管理WebPart. 工具的主要功能就是为页面添加.删除WebPart,对已经修改好的页面,可以导入导出页面上所有的WebPart.不过由于时间仓促,没有导出WebPart所在的WebPartZone,不过手动拖动还是很便捷的,呵呵. 下面,就进入WebPart管理工具的演示阶段吧,对了,忘了说了,如果有需要类似功能

关于Sharepoint中webpart的内容(高难)

问题描述 能进来看问题的我想都是高手在这里先谢过大家问题是这样的SharePoint中页面自带的webpart的信息都存放在数据库中现在我针对其中一种类型的webpart,在数据库webparts表中读出存放这个webpart相关属性的二进制字段alluserproperties内容如下:"a?ít?/sites/PortalSite01/Reports/Lists/SampleKPIs/KPIListViewPage.aspx/sites/PortalSite01/Reports/Lists/