【发布时间】:2016-02-17 15:35:22
【问题描述】:
我有一个包含网格视图的更新面板。 此网格有一个下拉列表列。
测试版 aspx 代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" EnablePartialRendering="false" UpdateMode="Conditional">
...
<asp:GridView ID="Gv_Queue" runat="server">
<Columns>
<asp:TemplateField HeaderText="H">
<ItemTemplate>
<asp:DropDownList ID="ddl_proprietà" runat="server" OnSelectedIndexChanged="ddl_proprietà_SelectedIndexChanged" AutoPostBack="true"/>
</ItemTemplate>
</Columns>
</asp:GridView
</asp:UpdatePanel>
我通过代码在UpdatePanel中添加了DDL的触发器:
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = dl.UniqueID; //dl is the Drop Down control
UpdatePanel1.Triggers.Add(trigger);
它在第一个 selectedIndexChanged 事件中运行良好......但第二次触发该事件时,触发器无法正常工作,因为回发操作运行。
我已经试过了:
- 将 AsyncPostBackTrigger 更改为 PostBackTrigger 但缺少 抛出组件异常。
- 将UpdatePanel 属性中的updateMode 更改为“Always”。
- 在 ItemTemplate 列中放置另一个 UpdatePanel,仅用于
下拉菜单。
【问题讨论】:
-
为什么要以编程方式添加触发器?您必须在每次回发时重新创建它。
-
因为如果我在 aspx 代码中添加触发器它不起作用:
它没有找到控件...但我想你是对的,第一次点击触发器存在,第二次死亡。
标签: c# asp.net gridview updatepanel postback