1

我有两个列表框和一个左右按钮......它们包含在更新面板中。唯一的问题是单击左或右按钮时,页面会刷新,这是不需要的。

<asp:UpdatePanel runat="server" ID="ExportUpdatePanel">
<ContentTemplate>
    <div class="exportWrapper">
    <table class="exportFilter">
        <tr>
            <td>
                <h2>
                    <%= ExportSelectDateLabel %></h2>
            </td>
        </tr>
        <tr>
            <td>
                <label>
                    <%= ExportFromDateLabel %></label>
                <asp:TextBox runat="server" ID="exportFilterFromDate" CssClass="exportDates"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>
                <label>
                    <%= ExportToDateLabel %></label>
                <asp:TextBox runat="server" ID="exportFilterToDate" CssClass="exportDates"></asp:TextBox>
            </td>
        </tr>
    </table>
    <table class="exportFilter">
        <tr>
            <td colspan="3">
                <h2>
                    <%= ExportSelectColumnsLabel %></h2>
            </td>
        </tr>
        <tr>
            <td>
                <label>
                    <%= ExportAvailableColumnLabel %></label>
            </td>
            <td>
            </td>
            <td>
                <label>
                    <%= ExportSelectedColumnLabel %></label>
            </td>
        </tr>
        <tr>
            <td>
                <asp:ListBox runat="server" ID="exportFilterAvailableColumns" SelectionMode="Multiple" CssClass="exportListBox">
                </asp:ListBox>
            </td>
            <td class="exportButtonsTd">
                <div>
                    <asp:LinkButton runat="server" OnClick="MoveSelectedClick"><span><img src="/images/source/arrow-right.png" alt="Move Right"/></span></asp:LinkButton>
                </div>
                <div class="mt_10">
                    <asp:LinkButton runat="server" OnClick="RemoveSelectedClick"><span><img src="/images/source/arrow-left.png" alt="Move Left"/></span></asp:LinkButton>
                </div>
            </td>
            <td id="exportedSelectedColumn">
                <asp:ListBox runat="server" ID="exportFilterSelectedColumns" SelectionMode="Multiple" CssClass="exportListBox">
                </asp:ListBox>
            </td>
        </tr>
    </table>
</div>
</ContentTemplate>
</asp:UpdatePanel>

有任何想法吗 ?

4

2 回答 2

1

根据您的代码,当您单击 UpdatePanel 中的链接按钮时,ExportUpdatePanel 部分将刷新。它不是整页刷新。更新面板的默认更新模式始终为。这意味着:UpdatePanel 控件的内容会在来自页面上任何位置的每个回发时更新。这包括来自其他 UpdatePanel 控件内的控件的异步回发和来自不在 UpdatePanel 控件内的控件的回发。

这是样本测试:

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
            <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
        </ContentTemplate>
</asp:UpdatePanel> 

在单击事件时,Label1 和 Label2 都会更新。

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = DateTime.Now.ToLongTimeString();
    Label2.Text = DateTime.Now.ToLongTimeString();
}

但只有 Label2 会改变,因为它会被更新面板刷新。

于 2012-05-02T20:00:10.257 回答
0

在使用更新面板之前,请阅读一些关于更新面板如何工作的文章。比如这个:http ://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-updatepanel-triggers

向您的更新面板添加UpdateMode="Conditional"ChildrenAsTriggers="true"属性,它应该可以按您的意愿工作。

<asp:UpdatePanel runat="server"
    ID="ExportUpdatePanel"
    UpdateMode="Conditional"
    ChildrenAsTriggers="true">
于 2012-05-02T19:37:32.507 回答