加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

UpdatePanel触发javascript脚本的办法附代码

发布时间:2023-06-01 11:10:35 所属栏目:Asp教程 来源:
导读:UpdatePanel触发javascript脚本的办法附代码:一.预呈现数据无法更改1.大家知道,预呈现的数据是无法更改的,以前可能提到过,这里再看demo,自定义一个控件[DefaultProperty("Text")][ToolboxData("<{0}:JsControl run

UpdatePanel触发javascript脚本的办法附代码:

一.预呈现数据无法更改

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无刷新更新范围,当我们自己定义控件的时候就需要注意.

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章