学习ajax (二)(updatepanel 服务器端)
学习ajax (二)(updatepanel 服务器端)updatepanel 服务器端 基本属性 RenserMode属性 用一个元素来圈出一个区域 -Block使用div来包含,-Inline使用span来包含 UpdateMode 更新的条件 -Aways是所有的某次异步的postback更新 -Conditional是满足一定条件更新 尽可能用Conditional 因为Aways是所有的异步postback都会产生刷新 ChildreAsTriggers bool属性 -ChildreAsTriggers为true表示如一个异步的postback由某个内部一个控件引发,updatepanel会产生更新 Triggers 指定<ContentTemplate>外部控件产生postback回发就会跟新updatepanel里面数据,注意外部更新不会让UpdateProgress显示出来 -AsyncPostBackTrigger 指定一个控件来回发 -PostBackTrigger 引发一个传统的刷新,即整个页面刷新 UpdatePanel控件 Update方法:强制某个updatePanel进行异步更新 IsInPartialRendering:判断UpdatePanel控件是否在输出过程 ScriptManager控件 GetCurrent 静态方法:获得当前页面上的ScriptManager 对象 IsInAsyncPostBack:是否在部分回发过程中 RegisterAsyncPostBackControl:指定某控件为异步PostBack控件 RegisterPostBackControl:指定是传统PostBack控件 UpdateProgress控件认识 DynamicLayout属性: 隐藏时是否占位,默认为true DisplayAfter属性:延迟多少时间后显示,单位为毫秒,默认500 AssociatedUpdatePanellD属性: 关联UpdatePanelID,默认为null,如果没有指定的话,任何一个updatepanel提交它的内容就会显示出来,关联的话,在更新时候就只会显示出来它 这里有一个局限性,就是在updatepanel内部一个控件触发刷新才会显示出来,外面控件触发回发刷新是不显示的 Timer控件 定期的更新 Interval属性:更新时间间隔,单位为毫秒,默认值为60000. Tick事件:响应这个时间做一些事情 Validators控件 注意一下vs2005的Validators控件不支持asp.net ajax,但是vs2008支持了 asp.net脚本注册 特别推荐不要用respones.write输出脚本,这样会破坏结构,最好用下面的方法调出脚本 ClientScriptManager cs=this.ClientScript; cs.RegisterStartupscript(this.GetType(),”key”,”<script>alert(‘弹出对话框’);</script>” 在异步更新的环境中注册脚本 使用ScriptManager对应的静态方法 新方法可以用来完全替换原有方法 在非异步回送环境中使用ClientScriptManager的对应方法进行注册 ScriptManager.RegisterStartupScript(this.UpdatePanel1,this.GetType(),"updatepanel1","<script>alert('您好') </script>",false); 只用当更新之后才会出现(每次注册的脚本不一定会出现) ScriptManager.RegisterStartupScript(this.Page,false); 保证他会输出 错误处理 服务器端ScriptManager设置 AllowCustomErrorsRedirect属性:遇到错误是否自动根据web.config中的设置跳转,默认值为true AsyncPostBackError事件:异步刷新中出现错误触发的事件 AsyncostBackErrorMessage属性:客户端接受到的错误信息 客户端编程 响应PaggeREquestManager的endRequest事件 将errorHandled属性设置为true. 在客户端处理错误,不需要在服务器端跳转 <script> Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender,e) { e.set_errorHandled(true); $get("error").innerHTML = "Sorry,an error has occurred: " + e.get_error().message; setTimeout(function(){ $get("error").innerHTML = ""; },3000); }); </script> 传统的PostBack过程 Submit将数据post到服务器端 init Load State Process PostBack Load PostBack Events Save state PreRender Render(输出) Upload 异步刷新 Submint 数据被PageRequestManager截获了并进行判断是传统的提交还是异步的提交 如果是异步提交(From+Header) 服务器端还是一个完整的页面周期 异步提交会在Header放置一个特殊标记 在Render会使用异步刷新的内容 实现原理简要分析 请求的内容没有任何减少,反而增加了一些数据(可以忽略不计) 尽可能少客户端接受到数据 简单实现原理分析 异步更新被调用的条件 UpdateMode为Always AsyncPostBackTrigger条件被满足 Update被调用 ASP.NET 通过调用两个函数($_onFormSubmit,$__dopostback)来提交 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |