65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Sys.Application.add_load 重新绑定控件的事件

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

25104

jQuery 在跨浏览器绑定控件事件方面提供了很大帮助。 但在使用 Asp.Net Ajax UpdatePanel 时,存在一些问题

jQuery 在跨浏览器绑定控件事件方面提供了很大帮助。 但在使用 Asp.Net Ajax UpdatePanel 时,这样做存在一些问题。

这是一个 jQuery 中 document.ready 函数的示例代码,它有助于将事件绑定到控件

 $(document).ready(function() {
   // 在这里放入你所有的 jQuery 代码。
 });

 考虑在你的 webform 中使用一个 updatepanel,并且你在其中有一个按钮。
假设你在你的 webform 中有一个 div 元素,你想让它保持隐藏状态,直到被要求显示。
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
              <div id='rightSide'>一些内容.......</div>
              <asp:Button ID="Button1" runat="server" Text="Button" />
        </ContentTemplate>

 </asp:UpdatePanel>

你可以使用以下代码来实现上述功能: $(document).ready(function() {

   $('div#rightSide').hide();

 });

这段代码将隐藏 div,直到 updatepanel 发生部分回发。这是因为,updatepanel 内部的内容将在每次部分渲染中刷新。 并且在那个时候,document.ready 函数将不会被执行。

那么我们如何保持上下文...

你可以在 updatepanel 中添加以下代码
Sys.Application.add_load(<function>);

也就是说:
将你的 document.ready 函数重新设计成以下形式:
 function BindEvents(){
   $(document).ready(function() {
      $('div#rightSide').hide();\
    });

}

然后将此函数添加到应用程序的加载中,也就是说:<asp:UpdatePanel ID="UpdatePanel1" runat="server">
     <ContentTemplate>
        <script>Sys.Application.add_load(BindEvents);</script>
        <div id='rightSide'>一些内容.......</div>
            <asp:Button ID="Button1" runat="server" Text="Button" />
     </ContentTemplate>
</asp:UpdatePanel>


这样每次 updatepanel 内发生部分渲染时,document.ready 都会触发。 从而解决了这个问题。

© . All rights reserved.