0

我有一个列出学生的可视化网络部件。

还有一个 webpart 来添加/编辑学生。

部署应用程序后,我创建了新的 webpart 页面并在一个区域中添加了 CreateStudent webpart,在另一个区域中添加了 ListStudent webpart。

添加学生时,我需要在 ListStudent webpart 的网格中找到该学生的详细信息。

我想我需要连接两个 webpart,将 CreateStudent webpart 作为提供者 webpart,将 ListStudent webpart 作为消费者 webpart,但我的疑问是,我不需要将任何特定值传递给 ListStudent webpart。

我在 ListStudent webpart Page_Load 中有一个函数调用,它设置了 gridview 的数据源并绑定它。如何才能做到这一点?

4

2 回答 2

1

这是满足您需求的链接,

我想它会对你有所帮助。

http://www.dotnetcurry.com/ShowArticle.aspx?ID=678

谢谢和问候。

这是另一个完全满足您需求的链接,

http://blogs.msdn.com/b/pranab/archive/2008/07/02/step-by-step-creating-connected-sharepoint-web-parts-using-iwebpartfield-interface-and-using-editor-部分和用户控件.aspx

于 2012-09-07T06:09:26.680 回答
0

下面是简单的提供者和消费者 Web 部件。提供者 UI 接受一个文本字段,它传递给消费者 Web 部件,消费者 Web 部件简单地输出它。Web Part之间的连接如下接口:

namespace ConnectedWebParts
{
    public interface IParcel
    {
        string ID { get; }
    }
}

提供者 Web 部件实现了这个接口,并且必须有一个带有属性 ConnectionProvider 的方法,该方法返回自身(因为它实现了接口):

namespace ConnectedWebParts
{
    public class ProviderWebPart : WebPart, IParcel
    {
        protected TextBox txtParcelID;
        protected Button btnSubmit;
        private string _parcelID = "";

        protected override void CreateChildControls()
        {
            txtParcelID = new TextBox() { ID = "txtParcelID" };
            btnSubmit = new Button() { ID = "btnSubmit", Text="Submit"};
            btnSubmit.Click += btnSubmit_Click;
            this.Controls.Add(txtParcelID);
            this.Controls.Add(btnSubmit);
        }

        void btnSubmit_Click(object sender, EventArgs e)
        {
            _parcelID = txtParcelID.Text;
        }

        [ConnectionProvider("Parcel ID")]
        public IParcel GetParcelProvider()
        {
             return this;
        }

        string IParcel.ID
        {
             get { this.EnsureChildControls();  return _parcelID; }
        }
     }
 }

使用者 Web 部件必须定义一个具有 ConnectionConsumer 属性的方法,该属性接受实现连接接口(提供者 Web 部件)的对象作为参数:

namespace ConnectedWebParts
{
    public class ConsumerWebPart : WebPart
    {
        protected IParcel _provider;
        protected Label lblParcelID;
        protected override void CreateChildControls()
        {
            lblParcelID = new Label();
            if (_provider != null && !String.IsNullOrEmpty(_provider.ID))
                lblParcelID.Text = _provider.ID;    

            this.Controls.Add(lblParcelID);
        }

        [ConnectionConsumer("Parcel ID")]
        public void RegisterParcelProvider(IParcel provider)
        {
            _provider = provider;
        }
    }
}
于 2012-09-09T21:04:29.367 回答