代码之家  ›  专栏  ›  技术社区  ›  gwydion93

如何让UpdatePanel为多个按钮工作?

  •  0
  • gwydion93  · 技术社区  · 6 年前

    我有一个有多个按钮的应用程序。每次单击按钮时,我都试图防止页面被重新加载(这会干扰其他控件),因此我将代码的主要部分包装在 <asp:UpdatePanel><ContentTemplate></ContentTemplate></asp:UpdatePanel> . 我已经研究了多个单一按钮的解决方案 <Triggers><asp:AsyncPostBackTrigger>... 就在 </ContentTemplate> 但这并不能解决我的问题。我在用 AjaxControlToolkit (我补充说 using AjaxControlToolkit; 我的档案)以及 ModalPopExtender 似乎会影响 UpdatePanel ,有人说 solutions . 不需要发布整个应用程序(它非常长),这里是当前代码(aspx和C)的基本布局,以及我到目前为止所做的尝试。对我做错了什么有什么建议吗?

    ASPX公司

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
        <ContentTemplate>
            <div class="container" id="table_controls_section" style="margin-top: 20px; width: 100%;">
                <div class="row" style="width: 100%;">
                    <table style="border-style:solid; border-color: darkblue; border-width:thin; border-bottom-width: 0px; width:100%;">                     
                        <tr>
                          <th style="text-align: center;">Requestor Info</th>
                        </tr>
                        <tr>
                          <td style="padding: 5px; text-align: center; width: 100%;">
                            <asp:Button ID="uxTicketHistoryButton" runat="server" Text="Show Ticket History"  style="color: blue;" OnClick="uxTicketHistoryButton_Click"/>&nbsp;
                             <asp:Button ID="uxUseContactInfoButton" runat="server" Text="Use Contact Info" style="color: blue;" OnClick="uxUseContactInfoButton_Click" />
                          </td>
                      </tr>
                    </table>
                </div>
            </div>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="uxUseContactInfoButton" />
            <asp:AsyncPostBackTrigger ControlID="uxTicketHistoryButton" />
        </Triggers>
    </asp:UpdatePanel> 
    

    C类#

    using System;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using AjaxControlToolkit;
    namespace BCA_TicketManagement
    {
        public partial class Summary : Page
        {
           ....
          protected void uxTicketHistoryButton_Click(object sender, EventArgs e)
          { ....
          }
          protected void uxUseContactInfoButton_Click(object sender, EventArgs e)
          { ....
          }
        }
    }
    

    到目前为止我试过的事情: 1) 添加 使用AjaxControlToolkit; 到C代码。在我的推荐信里也有。 2) 添加 UpdateMode="Conditional" ChildrenAsTriggers="true" 给我的 asp:UpdatePanel . 也试着改变 ChildrenAsTriggers="false" . 没有区别。 3) 试图得到 更新面板 通过添加 <Triggers><asp:AsyncPostBackTrigger...> 使用 ControlID 为了那个按钮。没有变化。 4) 添加 xmlns:asp="#unknown" <asp:AsyncPostBackTrigger...> . 抛出错误 AsyncPostBackTrigger has no property 'xmlns:asp="#unknown"' 注意 此页加载在 <form> 在中标记 Master.site 使用 <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> .

    0 回复  |  直到 6 年前
        1
  •  1
  •   Jawad Anwar    6 年前

    你应该提供你的 EventName 到触发器,如下例所示:

    <Triggers>
         <asp:AsyncPostBackTrigger ControlID="uxUseContactInfoButton" EventName="Click" />
         <asp:AsyncPostBackTrigger ControlID="uxTicketHistoryButton" EventName="Click" />
    </Triggers>
    

    我希望这能解决你的问题。