我有一个自定义的DropDownList控件,SDropDownList。我正在尝试注册并触发'SelectedIndexChanged'事件。我显然首先将OnSelectedIndexChanged =“method”属性添加到标记中,但它不会触发事件。我也尝试在Repeater的OnBound事件中以编程方式注册它
protected void rptrSection1_Bound(object sender, RepeaterItemEventArgs e)
{
var ctl = e.Item.FindControl("ddlS1") as SDropDownList;
ctl.SelectedIndexChanged += new EventHandler(ddlS1_SelectedIndexChanged);
}
注意: 我已经阅读了一些不同的论坛帖子,表明禁用Repeater的ViewState可以解决这个问题。这对我来说不是一个选择。
感谢您的帮助!
根据要求,标记:
<asp:Panel ID="pnlSection1" runat="server">
<asp:Repeater ID="rptrSection1" runat="server" OnItemCommand="rptrSection1_Command"
OnItemDataBound="rptrSection1_Bound">
<ItemTemplate>
<table class="Section2Table" cellspacing="3">
<tr>
<td class="simgv" style="padding: 3px">
<sc:SDropDownList ID="ddlS1" runat="server" OnSelectedIndexChanged="ddlS1_SelectedIndexChanged" >
<asp:ListItem Text="Compliant" Value="0" />
<asp:ListItem Text="Other Than Serious" Value="1" />
<asp:ListItem Text="Serious" Value="2" />
<asp:ListItem Text="Critical" Value="3" />
</sc:SDropDownList>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
答案 0 :(得分:1)
您必须设置AutoPostBack = true,否则SelectedIndexChanged将不会触发,因为没有回发到服务器。