我有一个包含gridview的更新面板。
该网格具有一个下拉列表列。
Beta 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更改为“始终”。
仅将另一个UpdatePanel放在ItemTemplate列中
落下。
最佳答案
您必须在每次回发中重新创建触发器。您可以将此代码添加到Load
的DropDownList
事件中:
aspx:
<asp:TemplateField HeaderText="H">
<ItemTemplate>
<asp:DropDownList ID="ddl_proprietà" OnLoad="ddl_proprietà_OnLoad" runat="server" OnSelectedIndexChanged="ddl_proprietà_SelectedIndexChanged" AutoPostBack="true"/>
</ItemTemplate>
</asp:TemplateField>
代码背后:
protected void ddl_proprietà_OnLoad(object sender, EventArgs e)
{
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = ((Control)sender).UniqueID; // sender is the DropDown control
UpdatePanel1.Triggers.Add(trigger);
}
关于c# - AsyncPostBackTrigger仅在第一次工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33737042/