欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2013年06月04日 14:44:56   作者:  
下面我就用ASP.NET的UserControl模擬SharePoint UserControl通信,兩者的本質(zhì),思想和實(shí)現(xiàn)方式都不變。

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

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

下面簡單演示一下兩個(gè)UserControl進(jìn)行通信

 

創(chuàng)建好一個(gè)類,兩個(gè)UserControl和一個(gè)web頁面。

這里分別是MyEventAgrs.cs,UCProvider.ascx,UCComsumer.ascx,Default.aspx。

MyEventAgrs.cs代碼如下:

復(fù)制代碼 代碼如下:

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


如果想傳遞其他對象時(shí)就只需要修改MyEventAgrs類的MyMsg方法。這里須繼承EventArgs抽象類,用于存放事件參數(shù)值,另外需定義一個(gè)委托事件,然后在其他的地方使用。

 UCProvider.ascx代碼如下:

復(fù)制代碼 代碼如下:

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


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

UCComsumer.ascx代碼如下:

復(fù)制代碼 代碼如下:

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


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

  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的時(shí)候就更加方便了:
復(fù)制代碼 代碼如下:

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

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


Default.aspx代碼如下:

前臺頁面里面需要注冊UserControl

復(fù)制代碼 代碼如下:

<%@ 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" %>


再引用

復(fù)制代碼 代碼如下:

<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" />


后臺頁面:
復(fù)制代碼 代碼如下:

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


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

相關(guān)文章

  • .NET之生成數(shù)據(jù)庫全流程實(shí)現(xiàn)

    .NET之生成數(shù)據(jù)庫全流程實(shí)現(xiàn)

    這篇文章主要介紹了.NET之生成數(shù)據(jù)庫全流程實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • ASP.NET?Core集成Apollo(阿波羅)

    ASP.NET?Core集成Apollo(阿波羅)

    這篇文章介紹了ASP.NET?Core集成Apollo的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • asp.net生成縮略圖示例方法分享

    asp.net生成縮略圖示例方法分享

    asp.net快速生成清晰縮略圖,大家參考使用吧
    2013-12-12
  • 微信公眾平臺開發(fā)之發(fā)送文本消息.Net代碼解析

    微信公眾平臺開發(fā)之發(fā)送文本消息.Net代碼解析

    這篇文章主要為大家詳細(xì)解析了微信公眾平臺開發(fā)之發(fā)送文本消息.Net代碼,感興趣的小伙伴們可以參考一下
    2016-06-06
  • asp.net下url傳遞中文的解決方案

    asp.net下url傳遞中文的解決方案

    asp.net下url傳遞中文的解決方案...
    2007-04-04
  • Asp.net內(nèi)置對象之Request對象(概述及應(yīng)用)

    Asp.net內(nèi)置對象之Request對象(概述及應(yīng)用)

    Request對象主要用于獲取來自客戶端的數(shù)據(jù),如用戶填入表單的數(shù)據(jù)、保存在客戶端的Cookie等,本文將圍繞Request對象,講解其的主要作用:讀取窗體變量、讀取查詢字符串變量、取得Web服務(wù)器端的系統(tǒng)信息。取得客戶端瀏覽器信息等等,感興趣的朋友可以了解下
    2013-02-02
  • list泛型自定義排序示例

    list泛型自定義排序示例

    這篇文章主要介紹了list泛型自定義排序示例,實(shí)現(xiàn)List泛型類將制定元素至前排序,大家參考使用吧
    2014-01-01
  • ASP.NET Core 2.0 WebApi全局配置及日志實(shí)例

    ASP.NET Core 2.0 WebApi全局配置及日志實(shí)例

    下面小編就為大家分享一篇ASP.NET Core 2.0 WebApi全局配置及日志實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • asp.net中利用ajax獲取動態(tài)創(chuàng)建表中文本框的值

    asp.net中利用ajax獲取動態(tài)創(chuàng)建表中文本框的值

    通常在做主從表的數(shù)據(jù)錄入中,會碰到在一個(gè)頁面上同時(shí)錄入主表數(shù)據(jù)和從表數(shù)據(jù),主表的數(shù)據(jù)只有一條,從表的數(shù)據(jù)有一條到多條,這樣就要動態(tài)創(chuàng)建從表數(shù)據(jù)錄入入口。
    2010-03-03
  • ASP.net WebAPI 上傳圖片實(shí)例

    ASP.net WebAPI 上傳圖片實(shí)例

    這篇文章主要介紹了ASP.net WebAPI 上傳圖片實(shí)例,有需要的朋友可以參考一下
    2013-12-12

最新評論