使用指令碼操作UpdatePanel中控制項的問題

2022-03-02 15:41:41 字數 3114 閱讀 2602

假設有乙個指令碼(用js或者jquery等類似手段編寫),為updatepanel中的乙個普通的textbox賦值。如果你以為這樣寫:

你將發現程式一開始執行還正常,但是如果在updatepanel中加上乙個button,點選裡邊的button之後textbox1將不再存有文字。

為什麼呢?因為updatepanel是乙個非同步的回發頁面。這個頁面在初次載入的時候自然隨著整個頁面的重新整理載入而載入,因此作用於頁面級別的jquery**可以起到作用。但是等到點選button之後,僅僅是updatepanel中的內部內容重新整理了,整個頁面根本不重新整理(換句話說,整個頁面的jquery根本沒有執行)。因此沒有任何作用了。

解決方案就是設法獲取非同步頁面的載入指令碼事件,然後進行賦值:

注意:「$('#').val("i'm bill gates!");」這句話絕對不能省略,因為sys.webforms.pagerequestmanager僅處理非同步頁面回發時候的情況。服務端類              客戶端類

page_init                      add_init方法        

page_loadadd_load方法

page_unload              add_unload方法

【相同點】一旦頁面重新整理,或者點選submit頁面導致整個頁面回發,或者位於updatepanel中的按鈕導致區域性頁回發,page_load和add_load照樣執行。

【不同點】page_load可以通過if(!ispostback)的方式判斷是否回發。add_load未提供了類似機制判斷區域性頁面是否回發。但是pagerequestmanager卻提供了乙個方法(get_isinasyncpostback())來判斷是否是第一次頁面非同步回發。如果把指令碼註冊**僅寫在這個方法塊裡邊,和page_load那種效果一樣,只註冊一次指令碼。所以根據情況而定。

至於pagerequestmanager的事件是針對updatepanel為主。有initrequesting,beginrequest,pageloading,pageload和endrequesting等事件。我們做乙個實驗,看看執行順序:

實驗結果:

頁面剛載入的時候:先執行add_init,然後page_loaded,最後add_load。

當點選button的時候:1)page_init 2)page_beginrequest 3)page_loading 4)page_loaded 5)add_load 6)page_endrequest。

【結論】

原文:

使用Python指令碼實現MySQL誤操作的快速回滾

commit 選取2426和2604作為分析binlog的起始位置 szd l0087668 gzz3306 master python2.7 mysql rollback.py f mysql bin.000009 o rollback.sql h127.0.0.1 p3306 uroot p12...

使用lua指令碼操作redis之demo

使用lua指令碼操作redis資料的乙個demo,只是為了入門,以後還會深入.set.lua,redis的set命令使用 redis set key val local key keys 1 local val argv 1 return redis.call set key,val set.lua...

使用Ruby指令碼操作Oracle資料庫

本文主要想通過乙個簡單的例子,說明如何書寫ruby指令碼執行oracle資料庫操作,主要步驟如下 print 請輸入商品原來狀態 old state gets old state old state.chomp chomp去除輸入行後面的換行 print 請輸入商品目標狀態 str state ge...