三.保留postback之後的值
html
不會保留控制項的值
1.利用什麼機制保留?
session
?還是viewstate
?當我們使用
viewstate
儲存text
的值,當再次輸入內容,點
button
後,textbox
的值是以前
viewsate
而不是剛才輸入的值???
protected overrides sub render(byval output as system.web.ui.htmltextwriter)
dim renderdata as string
renderdata = ""
output.write(renderdata)
end sub
private sub mytextbox_load(byval sender as object, byval e as system.eventargs)handles mybase.load
ifme.page.ispostback = true then me.text = me.page.request.form(me.clientid)
end sub
end class
注意,上面黑體字。這段程式碼使得控制項在
postback
的時候,透過
request.from
機制,取得表單山
textbox
中的值,並且寫入屬性
text
中,如此一來,徹底解決了所有的問題。
無法保留
viewstate
中的資訊
有時我們把物件儲存到
viewstate
中,需要序列化。例如:
getreturn me
.viewstate
("conn") '回傳屬性
end get
set(byval value as sqlclient.sqlconnection)
me.viewstate
("conn") = value '設定屬性
end set
end property
上面,檔程式執行到
me.viewstate ("conn") = value
會報錯。
我們可以使用
session
解決這一問題。
getreturn me.page.session(me.uniqueid & "_conn") '回傳屬性
end get
set(byval value as sqlclient.sqlconnection)
me.page.session(me.uniqueid & "_conn") = value '設定屬性
end set
end property
有沒有發現使用
session
和使用viewstate
儲存物件的時候,程式寫法有點不同,我們比較一下:
me.page.session(me.uniqueid & "_conn") = value
ß這是使用
session
me.viewstate
("conn") = valueß這是
viewstate
差別在,使用
viewstate
的時候,沒有加上
page
,而是直接使用,上面的「
me」關鍵字,應為寫在控制項
class
裡面,所以代表是控制項的本身,因此,
me.viewstate
表示的是「控制項自己的
viewstate
」,而me.page.session
則是,「控制所屬網頁的
session
物件」。
因此,viewstate
不會有同名稱的問題,因為即使在一張網頁上,有多個該控制項的
instance
,每乙個
instance
都有各自的
viewstate
,但是,由於
sessin
物件是共用的,所以會有名稱重複的問題,因此,我們在
session
物件的使用上,特別用
[me.uniqueid&
」_conn」]
這個名稱取代【
conn
】,以避免當網頁上同時有多個該控制項的
instance
衝突,導致不同的控制項訪問到同樣的
session
變數,使得不同的控制項
instance
,屬性值變成一樣。
Ajax學習札記(二)Accordion控制項
accordion是第乙個控制項,言歸正傳,正式開始 一 accordion 是乙個可以讓你在你的 web 頁面方便地開發類似 outlook 工具欄的 asp.net ajax 控制項。它可以使得你的頁面使用者方便地展開或者關閉一系列頁面元素的顯示。它有點類似多個 collapsiblepanel...
PyQt5 隱藏控制項並保留位置
設定控制項的可見度為0 每種控制項都有3種設定可見度為0的方法,下面來拿按鈕的來舉例了。標準的隱藏 方法一 self.pushbutton 3.hide 方法二 self.pushbutton 3.sethidden true 方法三 self.pushbutton 3.setvisible fal...
js保留二位小數
js保留小數常用有三種方法,可根據實際情況選擇 方法一 使用tofixed保留兩位小數 自帶四捨五入與補位 var num1 55.3715 console.log num1.tofixed 2 結果55.37 方法二 用math.round四捨五入 var num1 parsefloat 55.7...