如何将数据从一个用户控件传递到另一个用户控件都放在default.aspx中

时间:2017-03-01 08:17:03

标签: c# asp.net c#-4.0

如何将数据从一个用户控件传递给另一个用户控件都放在default.aspx

我有两个用户控件,uc1.ascxuc2.ascx都放在Default.aspx页面中。

uc1.ascx contains --> one Dropdown List ,

uc2.ascx contains ---> Repeater control

当下拉列表选择的索引发生变化时,我想根据uc2.aspx聊聊Repeater control - > dropdown Selection数据。

由于

2 个答案:

答案 0 :(得分:0)

你可以用事件BubbleEvent来做到这一点..

我的事件args 我用它来传输选定的数据

advises

用户控件1名为uc1

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

用户控制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
        });
    }
}

用户控件2名为uc2

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

默认aspx

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

答案 1 :(得分:0)

这样做的一种方法是创建嵌入两个用户控件的页面的公共属性,并使用此属性在两个用户控件之间发送数据。

为此,您需要将用户控件中的this.parent属性强制转换为您的页面类型,然后才能获取/设置该值。像

这样的东西
(this.parent as MyPage).MyProperty