DropDownList事件未在Repeater中触发

时间:2010-11-13 20:17:23

标签: asp.net

我有一个自定义的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>

1 个答案:

答案 0 :(得分:1)

您必须设置AutoPostBack = true,否则SelectedIndexChanged将不会触发,因为没有回发到服务器。