【问题标题】:Update Panel Button need to be pressed twice to update更新面板按钮需要按两次才能更新
【发布时间】:2015-05-17 18:18:16
【问题描述】:

我在更新面板中有一个列表视图,但我无法正确更新它 - 每个项目都有一个将其从列表中删除的按钮 - 确实如此,但需要按下两个按钮才能看到项目消失从页面。

这里是标记:

<asp:ScriptManager ID="DashScriptManager" runat="server"></asp:ScriptManager>

<asp:UpdatePanel ID="ToDoUpdate" runat="server" UpdateMode="Conditional">
   <ContentTemplate>
      <asp:ListView ID="ToDo" runat="server">
         <ItemTemplate>
            <li style="" class="<%# Eval("ToDoPriority")%>">
               <%# Eval("ToDoText")%>
               <div class="agile-detail">
                  <asp:LinkButton ID="ToDoComplete" runat="server" CssClass="pull-right btn btn-xs btn-primary" Text="Done" OnClick="ToDoComplete_Click"></asp:LinkButton>
                  <i class="fa fa-clock-o"></i> <%# Eval("ToDoDate")%>
               </div>
            </li>
            <asp:HiddenField ID="HiddenToDoID" runat="server" Value='<%# Eval("ToDoId") %>' />
         </ItemTemplate>
      </asp:ListView>
   </ContentTemplate>
</asp:UpdatePanel>

以及背后的代码:

protected void ToDoComplete_Click(Object sender, EventArgs e)
   {
      LinkButton ToDoComplete = sender as LinkButton;
      HiddenField todo =     ToDoComplete.NamingContainer.FindControl("HiddenToDoID") as HiddenField;
      int TodDoId = Convert.ToInt32(todo.Value);

      DashboardController.UpdateToDo(TodDoId);

      GetToDoItems(1);

      ToDoUpdate.Update();
    }

有什么方法可以通过按一下按钮来做到这一点吗?

【问题讨论】:

  • 当您第一次按下按钮时,是否真的调用了 Click 事件处理程序?如果不是,那可能是 Focus 的问题。另一个控件可能拥有鼠标,因此您需要单击其他地方以释放它,然后再次单击以按下按钮。

标签: c# asp.net asp.net-ajax updatepanel


【解决方案1】:

您缺少的是 UpdatePanel 中的触发器部分。作为 UpdateMode ="Conditional" 的更新面板,您需要指定触发器。如果您使用的是正常的完整回发,请将 AsyncPostBackTrigger 更改为 PostBackTrigger。

<asp:UpdatePanel ID="ToDoUpdate" runat="server" UpdateMode="Conditional">
   <ContentTemplate>
      <asp:ListView ID="ToDo" runat="server">
            <li style="" class="<%# Eval("ToDoPriority")%>">
               <%# Eval("ToDoText")%>
               <div class="agile-detail">
                  <asp:LinkButton ID="ToDoComplete" runat="server" CssClass="pull-right btn btn-xs btn-primary" Text="Done" OnClick="ToDoComplete_Click"></asp:LinkButton>
                  <i class="fa fa-clock-o"></i> <%# Eval("ToDoDate")%>
               </div>
            </li>
            <asp:HiddenField ID="HiddenToDoID" runat="server" Value='<%# Eval("ToDoId") %>' />
         </ItemTemplate>
      </asp:ListView>
   </ContentTemplate>

<Triggers>
 <asp:AsyncPostBackTrigger ControlID="ToDo" EventName="Click" />
 </Triggers>
</asp:UpdatePanel>

【讨论】:

  • 那么,这是否解释了为什么我们需要第二次点击更新 UpdatePanel?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
  • 2012-09-11
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多