你可以用事件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);
}
如果你的兩個usercontrols都在一個頁面內,你有很多方法可以做到這一點。一個是QueryString,還有其他的東西,如Cookie或Session – Valkyrie