最近在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;
|
新聞熱點
疑難解答
圖片精選