SharePoint自定义WebPart之间的连接

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,如下图: