我有一个 Repeater 控件,在它的某些单元格中包含一个包含 DropDownList 的 UserControl。在 Repeater 控件的 ItemDataBound 事件上,我将一个事件分配给 DropDownList,如下所示:
protected void MyRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
...
MyControl myControl = (MyControl)e.Item.FindControl("MyControl01");
myControl.DataSource = myObject;
myControl.DataBind();
myControl.DropDownList.SelectedItemChange += MyMethod_SelectedIndexChanged;
myControl.DropDownList.AutoPostBack = true;
....
}
protected void MyMethod_SelectedIndexChanged(object sender, EventArgs e)
{
//Do something.
}
事件永远不会触发。我需要帮助。
最佳答案
您的事件未在 PostBack 中引发,因为您的事件处理程序尚未附加(它仅在您的转发器数据绑定(bind)时在页面生命周期的迭代期间附加)。
如果您在标记中以声明方式附加事件处理程序,例如:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" />
</ItemTemplate>
</asp:Repeater>
然后您的事件处理程序将在 PostBacks 期间被调用。
关于c# - 将事件分配给 Repeater 控件内的自定义控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/463398/