国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET UserControl 通信的具體實現

ASP.NET UserControl 通信的具體實現

2019-11-08 12:44asp.net教程網 ASP.NET教程

下面我就用ASP.NET的UserControl模擬SharePoint 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之間進行。但是當頁面第一次加載的時候,也就是頁面加載好過分下拉框沒有被點擊之前,這里是沒有值傳遞的。

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲福利精品 | 日韩欧美在线观看一区二区三区 | 免费在线成人网 | 日韩中文字幕在线播放 | 一级a性色生活片毛片 | 天天爽夜夜爽 | 久久久夜色精品亚洲 | 亚洲精品影视 | 久久久久久国产精品mv | 国产成人片 | √天堂8在线网 | 亚色网站| 亚州精品天堂中文字幕 | 一区二区三区四区在线播放 | 青草视频网站 | 男人天堂网址 | 一级电影中文字幕 | 国产综合区 | 国产一区在线视频 | 欧美激情免费 | 亚洲欧洲视频 | 国产精品久久久久久av下载网址 | av免费网站 | 中文字幕2019 | 福利片在线观看 | 婷婷在线视频 | 欧美日韩国产精品 | 亚洲激情一区 | 国产精品美女久久久久久免费 | 久久av一区| 亚洲精品一区二区在线观看 | 91视频免费观看 | 国产精品美女久久久久久久网站 | 亚洲91| 91视频.com | 亚洲综合二区 | 亚洲一区中文字幕在线观看 | 中文字幕在线三区 | 免费成人福利视频 | 久久中文字幕一区二区 | 在线视频自拍 |