使用 JavaScript 更新 UpdatePanel

在 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"  onclick ="__doPostBack('','');"   />
10          </ div >

*.aspx.vb
1       Protected   Sub  Page_Load( ByVal  sender  As   Object ByVal  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 的控管中。

< input  id ="Button1"  type ="button"  value ="button"  onclick ="__doPostBack('UpdatePanel1','');"   />

程式碼下載: UpdatePanelRefresh.rar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值