ASP.NET使用updatepanel时页面应该刷新吗?

时间:2012-05-02 19:29:47

标签: asp.net ajax updatepanel

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

<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>

有什么想法吗?

2 个答案:

答案 0 :(得分: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会更改,因为它将由更新面板刷新。

答案 1 :(得分: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">