在主页面上,我有一个带有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" />
答案 0 :(得分:5)
您似乎误解了PostBackTrigger
的作用。
PostBackTrigger
会导致整页回发,而AsyncPostBackTrigger
会在UpdatePanel
内进行AJAX调用。 UpdatePanel
中的所有元素都会自动调用AsyncPostBackTrigger
,并且面板外的所有元素都会调用PostBackTrigger
s。
因此,要解决您的问题,只需删除整个Triggers
部分。