【发布时间】:2013-08-30 15:35:08
【问题描述】:
我有一个包含 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 设置一个异步触发器,但由于它是在转发器中创建的(因此我不知道会有多少)所以我真的不知道它是如何工作的。
有没有人以前经历过这种情况并且可能知道解决方法?
【问题讨论】:
-
您的 UpdatePanel 中有触发器吗?你能用更新面板更新完整的 aspx 代码吗
-
不,目前 UpdatePanel 中没有触发器。这通常是我会做的,但由于 DropDownList 在中继器内,我不确定将触发器指向什么。我不能真正发布完整的 ASPX,它是一个大页面,其中包含 ASPX 中的 UpdatePanel 和用户控件中的违规代码,在转发器中,然后在另一个用户控件中。 UpdatePanel 是基本的,看起来像这样。
...ascx -> 中继器 -> ascx -
您可能希望简化布局——
Repeater已经设计为对每一行重复标记。仅当您计划在其他地方使用该标记时,将该标记封装在UserControl中才有帮助。 -
这正是它是用户控件的原因。这是一个大型项目,所讨论的 DDL 的目的是用于列表分页,并且在所有地方都使用。
标签: c# asp.net drop-down-menu repeater autopostback