我有一个包含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列中
落下。

最佳答案

您必须在每次回发中重新创建触发器。您可以将此代码添加到LoadDropDownList事件中:

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/

10-08 23:26