Microsoft Asp.Net Ajax 1.0 脚本注册和UpdatePanel的事件控制(1)
来源:互联网 发布:决战武林弩炮进阶数据 编辑:程序博客网 时间:2024/06/10 04:50
我在很多的地方都看到 很多的人对微软的这个技术一直抱着观望的态度,因为这是客户端的技术,有很多选择的余地,事实上也确实有很多选择的余地,本人在asp.net ajax 1.0之前,就曾经用过ajax.net,anthem等框架,但当静下心来在asp.net项目中运用微软自身的ajax框架后,有了更深的体会,其实没有好观望的,微软以他的实力证明 ,他出的东西不弱,但也不是你想的那么“爽”,这也是微软一贯的作风,updatepanel等控件是支持视图状态的,也就是说他的效率比不上ajax.net框架,但他天然的和.net框架的结合,其使用方便又是微软技术的一大特色了,尽管anthem框架也支持视图状态,但页面控件一多buger就会层出不穷,因为他不是微软出的,asp.net ajax 1.0是必须要对.Net Freamwork打补丁的,这就从根本上得到了支持,第三方的anthem框架是很难做到这一点的。好的,实际运用中的一点体会,闲话少说,把在实际中asp.net ajax 1.0的一些东东和大家分享下
第一
在页面中运用updatepanel控件之后,无刷新的服务器端方法,再调用Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "<script type='text/javascript'>......</script>");方法是没有效果的,
其实原因很简单,传统的postback注册脚本是在页面重新加载的时候,在客户端写短脚本,客户端浏览器呈现的时候执行的,但在运用updatepanel之后页面不存在postback脚本自然是无效了,微软同样对原有的注册类进行了拓展,新添加了注册脚本的方法
ScriptManager.RegisterArrayDeclaration();
ScriptManager.RegisterClientScriptBlock();
ScriptManager.RegisterClientScriptInclude();
ScriptManager.RegisterClientScriptResource();
ScriptManager.RegisterStartupScript();
ScriptManager.RegisterOnSubmitStatement();
ScriptManager.RegisterHiddenField();
这些方法和asp.net中的Page.ClientScript下的方法是一样的效果,只是用法上稍有区别,加了一个参数,第一个参数为是那个updatepanel导致更新的,即第一个参数可为this.UpdatePanel1等,当前updatepanel的ID
当然还有一个细节asp.net 2.0 中即使是传统的postback也不大用Page.ClientScript注册脚本,而是运用对象
ClientScriptManager cls = this.ClientScript;
cls.RegisterStartupScript();
......
这是标准的做法
切忌,切忌 万不可用Response.Write(......);来注册脚本,无论在什么版本下,都是严重违法的!
比如在一个updatepanel更新的方法结束的时候可以加句: ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "delete", "alert('修改成功!')", true);
当然这样写其实还是不够精确,怎么说呢,很简单,这只是完成了在服务器端的运算,对于updatepanel而言在客户端还要更新updatepanel客户端div(若updatepanel属性设成则客户端为span)中的html,应该在客户端来处理这件事情就显得更得体了
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
function(sender, e)
{
if (e.get_error())
{
e.set_errorHandled(true);
alert('请求发生错误 !');
}
else if (e.get_response().get_aborted())
{
alert(' 请求中止!') }
else
{
alert('修改成功!');
}
});
endRequest是update中的异步更新本身的最后一个事件,注意是本身,微软同样在客户端建立起了一个完整的事件模型,在这个事件之后还会有Sys.Net.WebRequest.completed事件 它是真正的xmlhttp对象的完成事件,这个在以后的文章中再介绍
第一
在页面中运用updatepanel控件之后,无刷新的服务器端方法,再调用Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "<script type='text/javascript'>......</script>");方法是没有效果的,
其实原因很简单,传统的postback注册脚本是在页面重新加载的时候,在客户端写短脚本,客户端浏览器呈现的时候执行的,但在运用updatepanel之后页面不存在postback脚本自然是无效了,微软同样对原有的注册类进行了拓展,新添加了注册脚本的方法
ScriptManager.RegisterArrayDeclaration();
ScriptManager.RegisterClientScriptBlock();
ScriptManager.RegisterClientScriptInclude();
ScriptManager.RegisterClientScriptResource();
ScriptManager.RegisterStartupScript();
ScriptManager.RegisterOnSubmitStatement();
ScriptManager.RegisterHiddenField();
这些方法和asp.net中的Page.ClientScript下的方法是一样的效果,只是用法上稍有区别,加了一个参数,第一个参数为是那个updatepanel导致更新的,即第一个参数可为this.UpdatePanel1等,当前updatepanel的ID
当然还有一个细节asp.net 2.0 中即使是传统的postback也不大用Page.ClientScript注册脚本,而是运用对象
ClientScriptManager cls = this.ClientScript;
cls.RegisterStartupScript();
......
这是标准的做法
切忌,切忌 万不可用Response.Write(......);来注册脚本,无论在什么版本下,都是严重违法的!
比如在一个updatepanel更新的方法结束的时候可以加句: ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "delete", "alert('修改成功!')", true);
当然这样写其实还是不够精确,怎么说呢,很简单,这只是完成了在服务器端的运算,对于updatepanel而言在客户端还要更新updatepanel客户端div(若updatepanel属性设成则客户端为span)中的html,应该在客户端来处理这件事情就显得更得体了
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
function(sender, e)
{
if (e.get_error())
{
e.set_errorHandled(true);
alert('请求发生错误 !');
}
else if (e.get_response().get_aborted())
{
alert(' 请求中止!') }
else
{
alert('修改成功!');
}
});
endRequest是update中的异步更新本身的最后一个事件,注意是本身,微软同样在客户端建立起了一个完整的事件模型,在这个事件之后还会有Sys.Net.WebRequest.completed事件 它是真正的xmlhttp对象的完成事件,这个在以后的文章中再介绍
- Microsoft Asp.Net Ajax 1.0 脚本注册和UpdatePanel的事件控制(1)
- asp.net ajax--脚本注册
- Microsoft Asp.Net Ajax框架入门(10) ScriptManager, UpdatePanel, Timer
- asp.net控制updatepanel外面的控件
- asp.net ajax 使用updatepanel进行操作后使用脚本
- asp.net ajax 脚本注册方式
- ASP.NET 2.0 AJAX UpdatePanel
- ASP.NET AJAX之UpdatePanel 和JQUERY冲突
- ASP.NET AJAX之UpdatePanel 和JQUERY冲突
- [zt]ASP.NET AJAX之UpdatePanel 和JQUERY冲突
- ASP.NET AJAX之UpdatePanel 和JQUERY冲突
- ASP.NET AJAX之UpdatePanel 和JQUERY冲突
- 技巧和诀窍:在ASP.NET AJAX UpdatePanel中实现对后退/前进按钮的支持
- 技巧和诀窍:用ASP.NET AJAX来处理UpdatePanel控件的出错
- 技巧和诀窍:在ASP.NET AJAX UpdatePanel中实现对后退/前进按钮的支持
- 技巧和诀窍:用ASP.NET AJAX来处理UpdatePanel控件的出错
- 技巧和诀窍:在ASP.NET AJAX UpdatePanel中实现对后退/前进按钮的支持
- AJAX.NET的UpdatePanel全面应用(1)
- 整合SVN与Apache
- Python script redirection detection, shell '<' or anonymous piple
- 木炭和沉香
- 纪念那些日子
- 数学与C#编程
- Microsoft Asp.Net Ajax 1.0 脚本注册和UpdatePanel的事件控制(1)
- 经典文章收藏
- 如何用在代码中通过query接口来取结果集。
- Flex Defined
- 遍历文件夹下面所有文件
- Object Oriented Language
- 如何在后台代码中执行原生sql?
- Graphics Conference Deadlines
- 简单的css样式