濮阳杆衣贸易有限公司

主頁 > 知識庫 > ASP.NET UserControl 通信的具體實現(xiàn)

ASP.NET UserControl 通信的具體實現(xiàn)

熱門標簽:電銷語音自動機器人 地圖標注和認領 萊蕪外呼電銷機器人價格 戶外地圖標注軟件手機哪個好用 智能電話營銷外呼系統(tǒng) 凱立德導航官網(wǎng)地圖標注 五常地圖標注 鄭州400電話辦理 聯(lián)通 長春呼叫中心外呼系統(tǒng)哪家好

最近在SharePoint2007中用到了WebPart通信技術,個人覺得2007版本里面的ConnectionConsumer和ConnectionProvider沒有2010版本那么好用,于是換了一種思想去實現(xiàn)通信:WebPart容器中裝一個UserControl控件,這樣只要UserControl可以通信,就實現(xiàn)了WebPart之間通信。

UserControl是用戶自定義控件,我們可以在UserControl中注入事件,當一個UserControl觸發(fā)某種事件,然后通過事件參數(shù)來傳遞數(shù)據(jù),讓其他UserControl獲得這個事件傳遞過來的參數(shù),實現(xiàn)通信。

下面簡單演示一下兩個UserControl進行通信

 

創(chuàng)建好一個類,兩個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抽象類,用于存放事件參數(shù)值,另外需定義一個委托事件,然后在其他的地方使用。

 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;
        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);
        }    }


這里在前臺頁面中定義了一個DropDownList,并給DropDownList綁定了數(shù)據(jù)源,不再羅列前臺頁面。我想實現(xiàn)當用戶選擇DropDownList的時候將用戶選擇的DropDownList的值傳遞出去,代碼里面用myHandle(this, myEvent)來初始化事件。

UCComsumer.ascx代碼如下:

復制代碼 代碼如下:

 public partial class UCComsumer : System.Web.UI.UserControl
    {
public void InitValue(string msg) {
            lb.Text = msg;
        }
}

public partial class UCComsumer : System.Web.UI.UserControl
    {
public void InitValue(string msg) {
            lb.Text = msg;
        }
}


這里賦值的時候也可以用屬性來表示,比如:
復制代碼 代碼如下:

  public string UC1Msg
        {
            get{return this.lb.Text;}
            set{this.lb.Text=value;}
        }

public string UC1Msg
        {
            get{return this.lb.Text;}
            set{this.lb.Text=value;}
        }


如果用這種方式,在引用UserControl的時候就更加方便了:
復制代碼 代碼如下:

uc2:ucConsumer runat="server" ID="uc2" UC1Msg="Defalut Value" />

uc2:ucConsumer runat="server" ID="uc2" UC1Msg="Defalut Value" />


Default.aspx代碼如下:

前臺頁面里面需要注冊UserControl

復制代碼 代碼如下:

%@ Register TagPrefix="uc1" TagName="ucProvider" Src="~/UserControls/UCProvider.ascx" %>
%@ Register TagPrefix="uc2" TagName="ucConsumer" Src="~/UserControls/UCComsumer.ascx" %>

%@ Register TagPrefix="uc1" TagName="ucProvider" Src="~/UserControls/UCProvider.ascx" %>
%@ Register TagPrefix="uc2" TagName="ucConsumer" Src="~/UserControls/UCComsumer.ascx" %>


再引用

復制代碼 代碼如下:

uc1:ucProvider runat="server" ID="uc1" OnmyHandle="uc1_myHandle" />
uc2:ucConsumer runat="server" ID="uc2" />

uc1:ucProvider runat="server" ID="uc1" OnmyHandle="uc1_myHandle" />
uc2:ucConsumer runat="server" ID="uc2" />


后臺頁面:
復制代碼 代碼如下:

protected void uc1_myHandle(object sender, MyEventAgrs args)
        {
            if (args != null)
            {
                uc2.InitValue(args.MyMsg);
            }
            else
                uc2.UC1Msg = string.Empty;
        }

protected void uc1_myHandle(object sender, MyEventAgrs args)
        {
            if (args != null)
            {
                uc2.InitValue(args.MyMsg);
            }
            else
                uc2.UC1Msg = string.Empty;
        }


這樣就完成了整個過程。Default.aspx頁面僅僅是一個載體或者是中間介質,所有的操作都是在兩個UserControl之間進行。但是當頁面第一次加載的時候,也就是頁面加載好過分下拉框沒有被點擊之前,這里是沒有值傳遞的。

標簽:西寧 福州 西藏 宣城 衢州 湖州 紅河 岳陽

巨人網(wǎng)絡通訊聲明:本文標題《ASP.NET UserControl 通信的具體實現(xiàn)》,本文關鍵詞  ASP.NET,UserControl,通信,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET UserControl 通信的具體實現(xiàn)》相關的同類信息!
  • 本頁收集關于ASP.NET UserControl 通信的具體實現(xiàn)的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    东乡族自治县| 临夏市| 桑日县| 深州市| 阿坝| 丰原市| 沾益县| 万宁市| 射阳县| 小金县| 陕西省| 左权县| 桑植县| 铜川市| 奉贤区| 监利县| 安吉县| 大新县| 阳朔县| 嘉荫县| 蒲江县| 保靖县| 江口县| 家居| 宝鸡市| 龙陵县| 汝南县| 绩溪县| 鄂伦春自治旗| 辉南县| 杨浦区| 鹰潭市| 定州市| 彭阳县| 项城市| 论坛| 新绛县| 杭锦旗| 嘉荫县| 静安区| 扬中市|