3-10 SharePoint 开发自定义WebPart连接

创建webpart发送类

using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;


namespace ljzCustomWebPartLianJie.WPSend
{
    [ToolboxItemAttribute(false)]
    public class WPSend : WebPart,IWebPartField
    {
        private TextBox tb;
        private Button btn;

        protected override void CreateChildControls()
        {
            tb = new TextBox();
            Controls.Add(tb);
            btn = new Button();
            btn.Text = "Send";
            Controls.Add(btn);
        }
        //创建一个接口实例
        [ConnectionProvider("Send", AllowsMultipleConnections = true)]
        public IWebPartField SendObject()
        {
            EnsureChildControls();
            return this;
        }

        //将数据callback到接口实例
        public void GetFieldValue(FieldCallback callback)
        {
            EnsureChildControls();
            callback(tb.Text);
        }
        // Schema 属性返回 PropertyDescriptor 对象所封装的数据字段的架构信息
        public System.ComponentModel.PropertyDescriptor Schema
        {
            get { return null; }
        }



    }
}

webpart接收类 

using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

namespace ljzCustomWebPartLianJie.WPReceiver
{
    [ToolboxItemAttribute(false)]
    public class WPReceiver : WebPart
    {
        private Label lbl;
        private IWebPartField provider;

        protected override void CreateChildControls()
        {
            lbl = new Label();
            Controls.Add(lbl);
        }
        //检索接口实例
        [ConnectionConsumer("GetObject")]
        public void RecvObject(IWebPartField prov)
        {
            provider = prov;
        }

        //获取接口实例中的数据
        private void GetData(object fieldValue)
        {
            lbl.Text = Convert.ToString(fieldValue);
        }
        //在Render前去接口实例获取值
        protected override void OnPreRender(EventArgs e)
        {
            if (provider != null)
                provider.GetFieldValue(new FieldCallback(GetData));
            base.OnPreRender(e);
        }

    }
}

 

posted @ 2020-05-28 21:35  七秒钟得记忆  阅读(87)  评论(0)    收藏  举报