我有一个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中引发您的事件(仅当中继器与数据绑定时,才在页面生命周期的迭代期间附加事件处理程序)。

如果您在标记中声明性地附加了事件处理程序,例如:

<asp:Repeater ID="Repeater1" runat="server">
     <ItemTemplate>
         <asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" />
    </ItemTemplate>
</asp:Repeater>


然后,您的事件处理程序将在回发期间被调用。

关于c# - 将事件分配给Repeater控件中的自定义控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/463398/

10-12 12:44
查看更多