c# - 将事件分配给 Repeater 控件内的自定义控件

标签 c# asp.net

我有一个 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/

相关文章:

c# - 有没有办法防止 "The requested session cannot be accepted. It may be locked by another receiver."

c# - 如何使用转换从 web.config 中删除元素?

c# - 如何在 MigraDoc 中的表格周围添加边框?

javascript - Jquery - 尝试将数据发送到Ajax,但数据为空

c# - 如何使用asp.net中的页面URL以编程方式读取html页面的内容?

c# - 将小数从 LINQ 查询转换为货币

c# - 如何在 gridview 中使用 LinkBut​​ton 删除代码隐藏文件中的选定用户名?

c# - .NET DB 查询无需分配?

c# - 当 MQTTnet 服务器未运行时,PublishAsync 不会失败

c# - Entity Framework 6 (EF6) 中每个具体类型的表 (TPC) 继承