2017-03-01 23 views
2

如何從一個用戶控制到另一用戶控制傳遞數據都被放置在的Default.aspx如何從一個用戶控制到另一用戶控制傳遞數據都被放置在的Default.aspx

我有兩個用戶控件即uc1.ascxuc2.ascx都被放入Default.aspx頁面。

uc1.ascx contains --> one Dropdown List ,

uc2.ascx contains ---> Repeater control

而下拉列表中選擇索引改變,我想chatng的uc2.aspx - 基於dropdown Selection>Repeater control數據。

感謝

+0

如果你的兩個usercontrols都在一個頁面內,你有很多方法可以做到這一點。一個是QueryString,還有其他的東西,如Cookie或Session – Valkyrie

回答

0

你可以用事件BubbleEvent做..

我用它來運送我的事件參數選擇的數據

public class MyEventArgs : EventArgs 
{ 
    public string Value { get; set; } 
    public string Text { get; set; } 
} 

命名UC1

用戶控件1
public partial class uc1 : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void uc1Dorpdown_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     // event bubbling 
     RaiseBubbleEvent(this, new MyEventArgs 
     { 
      Value = this.uc1Dorpdown.SelectedItem.Value, 
      Text = this.uc1Dorpdown.SelectedItem.Text 
     }); 
    } 
} 

用戶控制1下拉

<asp:DropDownList ID="uc1Dorpdown" runat="server" AutoPostBack="true" OnSelectedIndexChanged="uc1Dorpdown_SelectedIndexChanged"> 
<asp:ListItem Value="1" Text="Item 1" ></asp:ListItem> 
<asp:ListItem Value="2" Text="Item 2" ></asp:ListItem> 
<asp:ListItem Value="3" Text="Item 3" ></asp:ListItem> 
<asp:ListItem Value="4" Text="Item 4" ></asp:ListItem> 
<asp:ListItem Value="5" Text="Item 5" ></asp:ListItem> 
<asp:ListItem Value="6" Text="Item 6" ></asp:ListItem> 
</asp:DropDownList> 

用戶控制2名爲UC2

public partial class uc2 : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    // public is important 
    public void RepeaterUpdate(MyEventArgs newValue) 
    { 
     // call repeater update code 
    } 
} 

默認的aspx做的

protected override bool OnBubbleEvent(object source, EventArgs args) 
    { 
     //handle bubbled event and call uc2 method 
     // MyControls.uc1 is uc type -- u can check eventargs type 
     if (source is MyControls.uc1) 
     { 
      this.uc21.RepeaterUpdate((MyEventArgs)args); 
     } 
     return base.OnBubbleEvent(source, args); 
    } 
0

一種方式,它是創建一個公共財產的p年齡嵌入兩個用戶控件並使用此屬性在它們中的兩個之間發送數據。

爲此,您需要將用戶控件中的this.parent屬性轉換爲您的頁面類型,然後才能獲取/設置值。就像

(this.parent as MyPage).MyProperty 
相關問題