最近在SharePoint2007中用到了WebPart通信技术,个人觉得2007版本里面的ConnectionConsumer和ConnectionProvider没有2010版本那么好用,于是换了一种思想去实现通信:WebPart容器中装一个UserControl控件,这样只要UserControl可以通信,就实现了WebPart之间通信。
UserControl是用户自定义控件,我们可以在UserControl中注入事件,当一个UserControl触发某种事件,然后通过事件参数来传递数据,让其他UserControl获得这个事件传递过来的参数,实现通信。
下面简单演示一下两个UserControl进行通信
创建好一个类,两个UserControl和一个web页面。
这里分别是MyEventAgrs.cs,UCProvider.ascx,UCComsumer.ascx,Default.aspx。
MyEventAgrs.cs代码如下:
 代码如下:
public delegate void MyEventHandle(object sender, MyEventAgrs args); 
    public class MyEventAgrs : EventArgs 
    { 
        public MyEventAgrs() { } 
        public string MyMsg { get; set; } 
    } 
public delegate void MyEventHandle(object sender, MyEventAgrs args);
    public class MyEventAgrs : EventArgs
    {
        public MyEventAgrs() { }
        public string MyMsg { get; set; }
    }
如果想传递其他对象时就只需要修改MyEventAgrs类的MyMsg方法。这里须继承EventArgs抽象类,用于存放事件参数值,另外需定义一个委托事件,然后在其他的地方使用。
 UCProvider.ascx代码如下:
 代码如下:
 public partial class UCProvider : System.Web.UI.UserControl 
    { 
        public event MyEventHandle myHandle; 
        protected void Page_Load(object sender, EventArgs e) 
        { 
            this.DropDownList1.SelectedIndexChanged += new EventHandler(DropDownList1_SelectedIndexChanged); 
        } 
        void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
        { 
            MyEventAgrs myEvent = new MyEventAgrs(); 
            myEvent.MyMsg = DropDownList1.SelectedValue; 
            myHandle(this, myEvent); 
        }    } 
public partial class UCProvider : System.Web.UI.UserControl
    {
        public event MyEventHandle myHandle;            
新闻热点
疑难解答
图片精选