当前位置: 主页 > Office办公 > 其他专区 > SharePoint > sharepoint custom webpart与custom webpart的联动方法

sharepoint custom webpart与custom webpart的联动方法

  • 2022-04-04
  • 来源/作者: 菜鸟图库/ 菜鸟图库
  • 276 次浏览

前面我们提到关于sharepoint  如何扩展webpart自定义属性边栏字段 custom webpart properties,这次主要是要实现,如果让一个webpart给另一个webpart传值。在sharepoint中,有提供了一种方法,就是用[ConnectionProvider("WebpartConnectionProvider")] 和[ConnectionConsumer("WebpartConnectionConsumer")],其中的ConnectionProvider这个属性是数据提供着,参数值代表显示名称;ConnectionConsumer这个属性是数据接收者,参数值也是代表显示名称。

实现这样的功能,有一下几个步骤。

1。新建一个Interface接口,IGetName.cs

 public interface IGetName
    {
        string Name { get; set; }
    }

2。新建两个个可视化部件,WebpartConnectionProvider和WebpartConnectionConsumer

WebpartConnectionProvider.ascx

<asp:TextBox ID="txtstr" runat="server"></asp:TextBox>
< asp:Button ID="BtnProvider"
    runat="server" Text="发送" οnclick="BtnProvider_Click" />

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace WebpartBarTest.WebpartConnectionProvider
{
    public partial class WebpartConnectionProviderUserControl : UserControl
    {
        public WebpartConnectionProvider WebPart { get; set; }
        protected void Page_Load(object sender, EventArgs e)
        {
           
        }
        protected void BtnProvider_Click(object sender, EventArgs e)
        {
            WebPart.Name = txtstr.Text;
        } 

    }

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 WebpartBarTest.WebpartConnectionProvider
{
    [ToolboxItemAttribute(false)]
    public class WebpartConnectionProvider : WebPart, IGetName
    {
        // 当更改可视 Web 部件项目项时,Visual Studio 可能会自动更新此路径。
        private const string _ascxPath = @"~/_CONTROLTEMPLATES/WebpartBarTest/WebpartConnectionProvider/WebpartConnectionProviderUserControl.ascx";
        protected override void CreateChildControls()
        {
            WebpartConnectionProviderUserControl control = Page.LoadControl(_ascxPath) as WebpartConnectionProviderUserControl;
            if (control != null)
            {
                control.WebPart = this;
            }
           
            Controls.Add(control);
        }
        string _Name = "";
        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }

        [ConnectionProvider("WebpartConnectionProvider")]
        public IGetName GetName()
        {
            return this as IGetName;
        }
       
    }
}

WebpartConnectionConsumer.ascx

传输过来的值是:<asp:Label ID="Label1" runat="server" Text=""></asp:Label>

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 WebpartBarTest.WebpartConnectionConsumer
{
    [ToolboxItemAttribute(false)]
    public class WebpartConnectionConsumer : WebPart
    {
        // 当更改可视 Web 部件项目项时,Visual Studio 可能会自动更新此路径。
        private const string _ascxPath = @"~/_CONTROLTEMPLATES/WebpartBarTest/WebpartConnectionConsumer/WebpartConnectionConsumerUserControl.ascx";
        public Label lbl;
        protected override void CreateChildControls()
        {
            Control control = Page.LoadControl(_ascxPath);
            lbl = (Label)control.FindControl("Label1");
            if (providerWebPart != null)
            {
                lbl.Text =providerWebPart.Name;
            }
            Controls.Add(control);
        }
        public IGetName providerWebPart;
        [ConnectionConsumer("WebpartConnectionConsumer")]
        public void ReceiveName(IGetName provider)
        {
            providerWebPart = provider;
        }
    }
}

3。部署到网站上。在页面上添加这两个webpart.如下图:

sharepoint custom webpart与custom webpart的联动方法
 

4。配置webpart连接,如下图,选择连接,发送对象,将consumer勾上。

sharepoint custom webpart与custom webpart的联动方法
 

5。保存编辑页面,如下图

sharepoint custom webpart与custom webpart的联动方法
 

接下来我们再文本框输入:广州京微信息科技有限公司,点击发送,把这个值,传给Consumer这个webpart接收,如下图:

sharepoint custom webpart与custom webpart的联动方法
 

如果我们继续数据其它的值,例如https://www.office26.com ,如下图:

sharepoint custom webpart与custom webpart的联动方法
 

这次主要是记录一下,如何用webpart给另一个webpart提供参数值,也就是我们常说的,webpart与webpart联动,连接。