【问题标题】:How to make UpdatePanel ignore clicking one button which is inside it?如何使 UpdatePanel 忽略单击其中的一个按钮?
【发布时间】:2010-01-19 15:30:35
【问题描述】:

UpdatePanel 中的按钮会自动注册为该 UpdatePanel 的触发器。有没有办法让 UpdatePanel 忽略其中一个按钮?也就是说,要使单击此按钮不会触发任何类型的回发?

【问题讨论】:

    标签: c# asp.net updatepanel


    【解决方案1】:

    您可以设置UpdateMode='Conditional',然后在<Triggers> 标签中设置您想要触发回发的按钮。像这样的:

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <Triggers>
            <asp:PostBackTrigger ControlID="button1" />
        </Triggers>
        <ContentTemplate>
            ...
            <asp:Button ID="button1" runat="server" Text="Click Me" />
        </ContentTemplate>
    </asp:UpdatePanel>
    

    【讨论】:

      【解决方案2】:

      这取决于该按钮的用途。如果按钮是调用代码隐藏方法,那么据我所知回发是不可避免的。

      如果您希望您的按钮仅执行客户端操作,那么普通的&lt;input type='button'&gt; 会比&lt;asp:button&gt; 做得更好。

      【讨论】:

      • 您可以通过将按钮的 javascript onclientclick 事件设置为“return false;”来阻止按钮回发。这将停止来自客户端的回发
      • UpdatePanel 不会强制回发...这是按钮的标准操作。您可以使用 jQuery 来中断回发,或者像 Weebleeuw 所说,只需使用标准输入按钮。如果您想阻止 UpdatePanel 中的 ajax 回发,可以将 Children as Triggers 设置为 false 并维护应强制执行异步回发的控件列表。
      • 附带说明,请确保在 updatePanel 上使用 UpdateMode="Conditional"。如果不这样做,将导致您在页面上的每个更新面板中完全刷新数据(假设您有超过 1 个)。这导致每次传递大量不必要的数据。我不确定他们为什么不将其设为默认值。
      猜你喜欢
      • 1970-01-01
      • 2019-03-10
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      相关资源
      最近更新 更多