您的位置:首页 > Web前端 > JavaScript

UpdatePanel触发javascript脚本技巧

2007-10-10 20:30 417 查看
相信很多同志都已经遇到这个问题了.这个本身不奇怪.下面我们来具体讨论此问题.

一.预呈现数据无法更改

1.大家知道,预呈现的数据是无法更改的,以前可能提到过,这里再看demo,自定义一个控件


[DefaultProperty("Text")]

[ToolboxData("<{0}:JsControl runat=server></{0}:JsControl>")]

public class JsControl : WebControl

protected void Button1_Click(object sender, EventArgs e)

[/b]Button1.Attributes["onmouseover"] = "alert('hello')";

2.在呈现过程中脚本初始化

第一种方法简单运用还可以,复杂就不行了,我们还是需要把脚本封装好跟控件结合使用的,我们不再在预呈现中注册脚本,而在呈现中实现(即RederContent方法).

我们只要保证脚本资源在前,初始化在后,控件在中间这一原则就可以了...以下方法是可行的



如下

protected override void RenderContents(HtmlTextWriter output)

protected void Button1_Click(object sender, EventArgs e)

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

function BeginRequestHandler(sender, args)

function EndRequestHandler(sender, args)

function ActivateAlertDiv(visstring, elem, msg)

{

var adiv = $get(elem);

adiv.style.visibility = visstring;

adiv.innerHTML = msg;

}

其他的话我们也可以更改控件属性,就如加个onclick事件什么的都可以

五.另类解决方法

此方法比较的绝,但用起来比较的爽。UpdatePanel之所以无法获取到脚本数据,是因为其获取范围还不够。。。接着的想法是:

照样无刷新取数据,但取回来的数据跟Postback回来的数据一样。

可能有人说会比较耗性能,那都是相对的。不过也是一个很好的想法。Telerik公司的RadAjaxPanel就是这么实现的,有兴趣的可以下载一个用用

漏掉的请大家继续补充,这个问题比较的普遍,希望对大家有帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: