使用 JavaScript 更新 UpdatePanel

时间: 2008-04-25 / 分类: 学习心得 / 浏览次数: 3,657 / 0个评论 发表评论

看到一位台湾朋友写的文章,觉得非常有用,这恰好能够解决我前几天碰到的一个令我头疼,而且是悬而未决的问题,所以我把它转帖过来跟大家分享一下,偷个懒吧o(∩_∩)o…哈哈

—————-

在 ASP.NET AJAX 機制中,UpdatePanel 有著相當重要的地位,它讓開發人員不用撰寫 AJAX 相關程式碼,就能享有 AJAX 的效果。一般包含在 UpdatePanel 中的子控制項,若子控制項有執行 PostBack 動作時,UpdatePanel 機制在前端會去攔截 __doPostBack 函式,使得控制項產生的 PostBack 都會經由 UpdatePanel 統一處理局部更新的動作。

可是有時我們會需要透過 JavaScript 要求 UpdatePanel 做更新的動作,一般都會以為直接呼叫 __doPostBack 即可。

以下以一個實例來做測試,我們在頁面的 UpdatePanel 放置一個 Label 來顯示最新時間。然後 Input (type=button) 在 onclick 直接呼叫 __doPostBack 函式。

*.aspx

  1. <asp:ScriptManager ID=ScriptManager1 runat=server />
      
  2.         <div>
      
  3.             <asp:UpdatePanel ID=UpdatePanel1 runat=server>
      
  4.                 <ContentTemplate>
      
  5.                     Server Time:
      
  6.                     <asp:Label ID=Label1 runat=server Text=Label></asp:Label>
      
  7.                 </ContentTemplate>
      
  8.             </asp:UpdatePanel>
      
  9.             <input id=Button1 type=button value=button string>__doPostBack(”,”); />
      
  10.         </div>  

*.aspx.vb

  1. Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load
      
  2.         Label1.Text = Now.ToString()
      
  3.     End Sub  

可是實際執行並不如預期,UpdatePanel 中的時間是更新了,可是頁面會產生閃爍的情形,這個 PostBack 並不會受 UpdatePanel 控管。

其實只要做一點修改就可以要求 UpdatePanel 做更新的動作,就是在 __doPostBack 函式的第一個引數 (eventTarget),傳入 UpdatePanel 的 ClientID 即可。實際執行的結果頁面就不會再閃爍了,因為 PostBack 動作已經在 UpdatePanel 的控管中。

  1. <input id=Button1 type=button value=button string>__doPostBack(‘UpdatePanel1’,”); />  

历史上的今天

2014年:追看的电视剧13:妙女神探(37条评论)

2013年:APP:安卓系统美剧追踪应用SeriesGuide(29条评论)

2011年:WhatPulse:键盘敲击和鼠标点击统计(46条评论)

2009年:《金刚狼(X-Men Origins: Wolverine)》(0条评论)

2006年:JAR文件包及jar命令详解(0条评论)

2006年:JAVA代码编译成exe文件-exe4j应用(2条评论)

发表评论

您的昵称 *

您的邮箱 *

您的网站