国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

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

2024-05-04 11:01:15
字體:
來源:轉載
供稿:網友
一.預呈現數據無法更改

  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.通過更改現有控件屬性,如
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金阳县| 清涧县| 财经| 孟村| 新沂市| 罗江县| 九江县| 柯坪县| 黄浦区| 柘城县| 阳城县| 盐山县| 辛集市| 巍山| 东乡族自治县| 河南省| 赤峰市| 紫云| 广元市| 阳江市| 吐鲁番市| 饶平县| 武清区| 江华| 都兰县| 民乐县| 万载县| 高密市| 青神县| 梁平县| 舟曲县| 临夏市| 天津市| 三台县| 大渡口区| 玉林市| 香河县| 宣威市| 五莲县| 南部县| 云浮市|