2

我有一个包含Repeater 的页面,其中包含服务器控件元素,位于UpdatePanel 中,而所有其他控件都正常运行,但Drop Down 控件每次都会导致完整的回发。

<asp:Repeater ID="rpt" runat="server">
    <ItemTemplate>
        <asp:SomeWorkingControl ID="swc" runat="server" />
        <asp:DropDownList ID="ddl" runat="server" OnSelectedIndexChanged="ddl_SelectedIndexChanged" AutoPostBack="true">
            <asp:ListItem Text="0" Value="0" />
            <asp:ListItem Text="1" Value="1" />
        </asp:DropDownList>
    </ItemTemplate>
</asp:Repeater>

这大概是我的代码的样子,DropDownList 控件实际上是在 UserControl 中,但原理是一样的。

如果我向 SomeWorkingControl 应用一个事件,那么就会有一个 Ajax 回发,一切都很好。

但是,与 DropDownList 关联的事件会导致完整的回发!我知道通常你会为 DropDown 设置一个异步触发器,但由于它是在转发器中创建的(因此我不知道会有多少)所以我真的不知道它是如何工作的。

有没有人以前经历过这种情况并且可能知道解决方法?

4

1 回答 1

13

尝试更改此行:

<asp:DropDownList ID="ddl" runat="server" OnSelectedIndexChanged="ddl_SelectedIndexChanged" AutoPostBack="true">

为了:

<asp:DropDownList ID="ddl" runat="server" OnSelectedIndexChanged="ddl_SelectedIndexChanged" AutoPostBack="true" ClientIDMode="AutoID">

最近我遇到了同样的问题,我发现ClientIDMode可以解决它。

请看这里:asp.net ClientIDMode Changes

于 2013-08-30T16:42:21.623 回答