设为首页 收藏本站
查看: 1201|回复: 0

[经验分享] SharePoint 自定义WebPart之间的连接

[复制链接]

尚未签到

发表于 2015-9-26 08:08:02 | 显示全部楼层 |阅读模式
  1、创建SharePoint解决方案,添加两个WebPart分别用来发送和接收;
DSC0000.png
  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,然后连接,如下图:
DSC0001.png
  5、查看效果
  点击Send前,只能看到页面上的两个webpart,如下图:
DSC0002.png
  在TextBox中输入值,点击Send,刷新页面,TextBox中的值已经从SendWebPart中发送到ReceiveWebPart中了,两个自定义WebPart连接成功!
DSC0003.png
  
  在完成了两个自定义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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118875-1-1.html 上篇帖子: SharePoint Iframe 报错“此内容不能显示在一个框架中” 下篇帖子: 1-3 SharePoint 2010概述
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表