如何使UpdatePanel可以用于多个按钮?

时间:2019-02-26 15:20:30

标签: c# asp.net button updatepanel page-refresh

我有一个具有多个按钮的应用程序。我试图防止每次单击按钮时重新加载页面(这会干扰其他控件),所以我将代码的主要部分包装在<asp:UpdatePanel><ContentTemplate></ContentTemplate></asp:UpdatePanel>中。我已经在<Triggers><asp:AsyncPostBackTrigger>...之后研究了涉及使用</ContentTemplate>的单个按钮的多种解决方案,但这不能解决我的问题。据一些{{3}称,我正在使用AjaxControlToolkit(已将using AjaxControlToolkit;添加到我的C#文件中)和ModalPopExtender,它们似乎会影响UpdatePanel的行为。 }}。在不发布整个应用程序的情况下(很长),这是当前代码(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)将using AjaxControlToolkit;添加到C#代码中。它也显示在我的参考文献中。 2)将UpdateMode="Conditional" ChildrenAsTriggers="true"添加到我的asp:UpdatePanel中。还尝试更改ChildrenAsTriggers="false"。没有不同。 3)通过使用UpdatePanel为按钮添加<Triggers><asp:AsyncPostBackTrigger...>,以尝试使ControlID适用于单个按钮。不用找了。 4)将xmlns:asp="#unknown"添加到<asp:AsyncPostBackTrigger...>。引发错误AsyncPostBackTrigger has no property 'xmlns:asp="#unknown"' 注意:此页面已使用<form>加载到Master.site的{​​{1}}标签中。

1 个答案:

答案 0 :(得分:1)

您应将EventName提供给触发器,如以下示例所示:

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

我希望能解决您的问题。