国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP教程 - UpdatePanel觸發javascript腳本的方法附代碼

UpdatePanel觸發javascript腳本的方法附代碼

2019-10-08 09:42asp代碼網 ASP教程

一.預呈現數據無法更改   1.大家知道,預呈現的數據是無法更改的,以前可能提到過,這里再看demo,自定義一個控件 [DefaultProperty("Text")] [ToolboxData("<{0}:JsControl runat=server></{0}:JsControl>")] public class JsControl : WebControl {

一.預呈現數據無法更改 

  1.大家知道,預呈現的數據是無法更改的,以前可能提到過,這里再看demo,自定義一個控件 

[DefaultProperty("Text")] 
[ToolboxData("<{0}:JsControl runat=server></{0}:JsControl>")] 
public class JsControl : WebControl 

[Bindable(true)] 
[Category("Appearance")] 
[DefaultValue("")] 
[Localizable(true)] 
 public string Text 
 { 
 get 
 { 
 String s = (String)ViewState["Text"];  
 return ((s == null) ? String.Empty : s);  
 } 

  set 
 { 
  ViewState["Text"] = value;  
  } 


 protected override void OnPreRender(EventArgs e) 
 { 
 Text = "hello,you can't change me";  
 base.OnPreRender(e);  
 } 

 protected override void RenderContents(HtmlTextWriter output) 
 { 
 output.Write(Text);  
 } 

aspx頁面 

protected void Button1_Click(object sender, EventArgs e) 

JsControl1.Text = "I want to change the Text property";  

  你會發現你并未更改屬性.這牽涉到控件生命周期的執行.為什么要說這個,因為控件的大部分腳本都是在預呈現中注冊的.  

  這有什么問題嗎? 其本身想法很好,腳本在此事件(指OnPreRender)中注冊,注冊腳本資源在前(控件夾中間),腳本初始化在最后.這符合javascript的使用原則,先導入腳本,然后有標簽,初始化的腳本須放在標簽后面. 

  二.UpdatePanel引起的問題 

  上面的問題如果是服務器提交回傳的則可行,主要問題是我們要用ajax無刷新注冊腳本.以下我們再來看asp.net2.0內置的treeview控件,拖個控件要頁面看其生成的html代碼。 

  你已經看到很多的腳本注冊和初始化了. 

  我們來測試下UpdatePanel能干什么事情,我們設置其屬性Visible為False到True 

  借助FireBug的威力我們來看下UpdatePanel在無刷新狀態下返回給了我們什么 
  
  出錯了,大家可能也遇到過此情況,很正常嘛,UpdatePanel沒有為我們注冊腳本也沒未我們初始化,在屬于正常現象,UpdatePanel只管其容器里面的,其他的不歸它管. 

  三.解決方法 

  要解決TreeView控件,我是想不出來,這個控件算是在asp.net ajax模式下算是完蛋了.為了迎合asp.net ajax框架的運用,我們需要知道UpdatePanel無刷新更新范圍,當我們自己定義控件的時候就需要注意. 

1.控件本身標簽 
2.控件內部 
3.UpdatePanel容器內部 

  若想使用UpdatePanel更新數據后再觸發客戶端事件的,有以下方案 

  1.通過更改現有控件屬性,如 

Button1.Attributes["onmouseover"] = "alert('hello')";  
  2.在呈現過程中腳本初始化 

  第一種方法簡單運用還可以,復雜就不行了,我們還是需要把腳本封裝好跟控件結合使用的,我們不再在預呈現中注冊腳本,而在呈現中實現(即RederContent方法). 
我們只要保證腳本資源在前,初始化在后,控件在中間這一原則就可以了...以下方法是可行的 

如下 
protected override void RenderContents(HtmlTextWriter output) 

output.Write("<script src=\"xxxx.js\"></script>");  
output.Write(Text);  
output.Write("<script>alert('hello')</script>");  

  四.幾個誤區 

  1.驗證控件在ajax框架中可以完好使用 
其實是其加載了一段腳本,不然其也會掛掉 
  2.狀態保留 
  在UpdatePanel中更新數據后,再Postback,無刷新更新的數據狀態還保留 
  3.更新數據后執行客戶端腳本 

曾經我們天真的會這么寫 

protected void Button1_Click(object sender, EventArgs e) 

Label1.Text = "alert('hello')";  

  結果什么也沒發生,window.onload事件已過,除非你刷新(可你不想刷新),不然沒人幫你觸發。 
  誰來觸發?微軟幫我們準備好了。你要的大概就是這個了,數據更新前后都是一個事件觸發。我們可以圍繞著這兩個事件為控件做點事情。這個狀態適合于數據取到后就立馬觸發的需要。 
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);  
 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);  
 function BeginRequestHandler(sender, args) 
 { 
 var elem = args.get_postBackElement();  
 ActivateAlertDiv('visible', 'AlertDiv', elem.value + ' processing');  
 } 
 function EndRequestHandler(sender, args) 
 { 
 ActivateAlertDiv('hidden', 'AlertDiv', '');  
 } 
 function ActivateAlertDiv(visstring, elem, msg) 
 { 
 var adiv = $get(elem);  
 adiv.style.visibility = visstring;  
 adiv.innerHTML = msg;  
 } 
  其他的話我們也可以更改控件屬性,就如加個onclick事件什么的都可以 

  五.另類解決方法 

此方法比較的絕,但用起來比較的爽。UpdatePanel之所以無法獲取到腳本數據,是因為其獲取范圍還不夠。。。接著的想法是: 

  照樣無刷新取數據,但取回來的數據跟Postback回來的數據一樣。 
可能有人說會比較耗性能,那都是相對的。不過也是一個很好的想法。Telerik公司的RadAjaxPanel就是這么實現的,有興趣的可以下載一個用用 .

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 99国产精品99久久久久久 | 国产一区色 | 免费黄色在线 | 久久精品亚洲国产 | 天天艹久久 | 精品一区二区三区免费毛片爱 | 亚洲视频在线一区 | 久久综合2019 | 中文精品一区二区 | 亚洲国产精品福利 | 久久久国产一区二区三区四区小说 | 国产精品网站在线观看 | 亚洲精品久久久久中文字幕欢迎你 | 午夜精品久久久 | 色婷婷av久久久久久久 | 国产欧美一区二区精品久久 | 日韩在线观看一区 | 一区二区三区在线 | 狠狠干很很操 | 午夜天| 欧美激情精品久久久久久黑人 | 午夜视频在线观看一区二区三区 | 欧美日韩三级 | av电影免费在线 | 黄视频免费 | 亚洲经典一区 | 日韩av色 | 97在线观看| 国产精品久久久久久一区 | 成人欧美一区二区三区在线观看 | 国产黄色三级 | 国产福利视频在线观看 | 中文字幕一区在线 | 久久国内精品 | 精品久久久久久久久久久久久久 | 中文字幕免费看 | 毛片网站在线 | 国产精品无码久久久久 | 免费黄色在线 | 欧美日韩国产一区二区三区 | 国产综合精品一区二区三区 |