更新面板刷新整个页面

时间:2011-12-17 07:59:47

标签: asp.net listbox updatepanel

在主页面上,我有一个带有enablepartialrendering的scriptmanager是真的。 在页面中我有一个usercontrol,在这个usercontrol上是一个更新面板,Updatemode是有条件的。

这是关于两个列表框,通过单击图像按钮将项目从左侧列表框交换到右侧列表框。 (这很好用)

两个图像按钮位于样式表的div块中。 我为他们使用postbacktrigger。 整个页面仍在重新发布,我做错了什么?

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DoubleListBox.ascx.cs" 
Inherits="site.Controls.DoubleListBox" %>
<div class="formfield ff_itemswapper">
<asp:Label ID="Label" runat="server" />
<div class="itemswapper">
    <asp:UpdatePanel ID="updatePanelListboxes" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:ListBox ID="lsbFrom" runat="server" CssClass="is_current"></asp:ListBox>
            <div class="is_transfers" runat="server">
                <asp:ImageButton ID="imb_Left" runat="server" CssClass="is_transfer_in" ImageUrl="../Images/gfx/arrow_left.png"
                    OnClick="imbLeft_Click" CausesValidation="False" />
                <asp:ImageButton ID="img_Right" runat="server" CssClass="is_transfer_out" ImageUrl="../Images/gfx/arrow_right.png"
                    OnClick="imgRight_Click" CausesValidation="False" />
            </div>
            <asp:ListBox ID="lsbTo" runat="server" CssClass="is_source"></asp:ListBox>
        </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="imb_Left" />
            <asp:PostBackTrigger ControlID="img_Right" />
        </Triggers>
    </asp:UpdatePanel>
</div>

列表框由

在aspx页面中注册
<%@ Register Src="~/Controls/DoubleListBox.ascx" TagName="DoubleListBox" TagPrefix="lsb" %>

并呼吁:

<lsb:DoubleListBox ID="lsbPractise" runat="server" />

1 个答案:

答案 0 :(得分:5)

您似乎误解了PostBackTrigger的作用。

PostBackTrigger会导致整页回发,而AsyncPostBackTrigger会在UpdatePanel内进行AJAX调用。 UpdatePanel 中的所有元素都会自动调用AsyncPostBackTrigger,并且面板外的所有元素都会调用PostBackTrigger s。

因此,要解决您的问题,只需删除整个Triggers部分。