• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    ASP.NET UserControl 通信的具體實現

    來源:懂視網 責編:小采 時間:2020-11-27 22:40:59
    文檔

    ASP.NET UserControl 通信的具體實現

    ASP.NET UserControl 通信的具體實現:最近在SharePoint2007中用到了WebPart通信技術,個人覺得2007版本里面的ConnectionConsumer和ConnectionProvider沒有2010版本那么好用,于是換了一種思想去實現通信:WebPart容器中裝一個UserControl控件,這樣只要UserControl可以通信
    推薦度:
    導讀ASP.NET UserControl 通信的具體實現:最近在SharePoint2007中用到了WebPart通信技術,個人覺得2007版本里面的ConnectionConsumer和ConnectionProvider沒有2010版本那么好用,于是換了一種思想去實現通信:WebPart容器中裝一個UserControl控件,這樣只要UserControl可以通信

    最近在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;
            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綁定了數據源,不再羅列前臺頁面。我想實現當用戶選擇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之間進行。但是當頁面第一次加載的時候,也就是頁面加載好過分下拉框沒有被點擊之前,這里是沒有值傳遞的。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    ASP.NET UserControl 通信的具體實現

    ASP.NET UserControl 通信的具體實現:最近在SharePoint2007中用到了WebPart通信技術,個人覺得2007版本里面的ConnectionConsumer和ConnectionProvider沒有2010版本那么好用,于是換了一種思想去實現通信:WebPart容器中裝一個UserControl控件,這樣只要UserControl可以通信
    推薦度:
    標簽: 通訊 實現 通信
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 四虎影院国产精品| 国产乱码精品一区二区三区中文| 欧美亚洲综合免费精品高清在线观看| 国产精品毛片无遮挡| 日本Aⅴ大伊香蕉精品视频 | 国产精品极品| 国产精品电影网| 亚洲国产精品无码久久久蜜芽| 精品国产一区二区三区2021| 欧美+亚洲+精品+三区| 国产精品视频二区不卡| 亚洲精品乱码久久久久久久久久久久| 久久精品国产99久久香蕉| 99在线观看视频免费精品9| 国产成人精品亚洲日本在线| 欧美精品中文字幕亚洲专区| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 亚欧无码精品无码有性视频| 精品国产午夜肉伦伦影院| 国产精品视频色视频| 99国内精品久久久久久久| 老司机69精品成免费视频| 国产在线拍揄自揄视精品不卡 | 精品国产福利在线观看| 日韩国产成人精品视频| 人妻熟妇乱又伦精品视频| 少妇精品无码一区二区三区| 亚洲精品美女久久777777| 亚洲欧洲成人精品香蕉网| 一本一道精品欧美中文字幕| 亚洲国产精品日韩专区AV| 欧美精品福利视频一区二区三区久久久精品 | 国产精品1024在线永久免费| 亚洲精品综合一二三区在线| 免费精品99久久国产综合精品 | 久久久久久九九99精品| 久久精品国产亚洲AV香蕉| 久久精品国产亚洲AV大全| 久久成人国产精品| 国产精品VA在线观看无码不卡| 国产精品女同一区二区|