All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
对C#中的TreeView添加背景图_[Asp.Net教程]
CView类的OnUpdate()成员函数
SQL循序渐进(22)EXISTS,和,ALL_[SQL,Server教程]
SQL,Server,2005数据库升级要点和技巧_[SQL,Server教程]
PHP教程:在PHP中将图片存放ORACLE中_[PHP教程]
C#中删除XML节点实例
JavaScript与XML XSL的综合使用_[XML教程]
C#中的PrintDialog组件的应用实例
如何用C#写一个简单的Login窗口_[Asp.Net教程]
ASP.NET2.0+VS2005利器大评析之优点篇_.net资料_编程技术
Reading number is top 10 pictures
Flow chart of breast implants
The beginning and end
The most popular girls welcome eggplant
The money of more than 100 countries and regions2
A beautiful girl to bud1
陪睡门马睿菈自曝写真 称首拍大尺度照片3
Summer is most suitable for young people to travel in China10
Kim jong il's mistress, national beauty JinYuJi actor3
Fat bird to fly
2012 national geographic daily picture3
Download software ranking
变速齿轮3.26
Boxer Classic video2
Desire a peach blossom
JSP+Ajax Web development typical examples
Ashlynn Video5
传奇私服架设教程-chm
Visual C++界面编程技术
小黑猫大战两米大花蛇
终极变速大师Speeder3.26
VeryCD电驴(EasyMule) V1.1.9 Build09081
归海一刀 published in(发表于) 2014/1/30 0:51:59 Edit(编辑)
Asp.net,Ajax,学习笔记4,UpdatePanel的使用(上)_[Asp.Net教程]

Asp.net,Ajax,学习笔记4,UpdatePanel的使用(上)_[Asp.Net教程]

Asp.net Ajax 学习笔记4 UpdatePanel的使用(上)_[Asp.Net教程]

ScriptManager的AllowCustomErrorsRedirect属性允许用户自定义错误导向页,将此属性设置为true,配合WebConfig的customErrors可以使ScriptManager传输发生错误时自动导向用户定义的错误导向页。


ScriptManager的OnAsyncPostBackError事件,当在服务端发生异常时,此事件会触发,要触发此事件AllowCustomErrorsRedirect属性必须为false,否则此事件不会触发。在此事件处理中,可将服务端异常信息付给客户端异常信息,如以下代码


ScriptManager.GetCurrent(this).AsyncPostBackErrorMessage = e.Exception.Message;


那么在客户端如何处理呢?首先得到PageRequestManager的一个实例,并给endRequest方法加入一个事件处理器。在此事件处理器中首先判断Args参数是否能得到异常对象,通过调用get_error方法,如果得到的错误不为空,那么表示服务端发生了异常,调用set_errorHandled方法,标记此异常已经被处理过。剩下的工作就是通过客户端代码呈现这个错误的提示信息。注意Args参数中get_error()方法得到错误对象之后,这个错误对象的message是服务端的AsyncPostBackErrorMessage


UpdatePanel可以完全由服务端加载,也就是说可以直接用代码动态生成


UpdatePanel up = new UpdatePanel();
up.ID = "UpdatePanel1";
this.Form.Controls.Add(up);
LiteralControl lc = new LiteralControl(DateTime.Now.ToString());
up.ContentTemplateContainer.Controls.Add(lc);
Button btn = new Button();
btn.Text = "Refresh";
up.ContentTemplateContainer.Controls.Add(btn);当然页面上必须有ScriptManager。注意不要为页面中的UpdatePanel添加新的Trigger。动态加载Trigger以后,在页面第一次被打开之后,PageRequestManager记住了这么一件事情:“Button1造成的提交应该作为异步刷新处理”。因此,在Button1第一次被点击时,页面进行了异步刷新。但是,在这次异步刷新之后,PageRequestManager将会忘记所有的这些信息(UpdatePanel、异步提交元素、同步提交元素、超时时间),服务器端这时也会把新的信息给传输到客户端来。说白了,就是在异步刷新PageLoad的时候,RegisterAsyncPostBackControl方法就少了一次调用,导致提交控件成为了传统的同步刷新控件。解决方案,使用反射机制调用Initialize方法//得到UpdatePanelTrigger的Initialize方法的反射方法对象
private static MethodInfo triggerInitMethod =
typeof(UpdatePanelTrigger).GetMethod(
"Initialize",
BindingFlags.NonPublic | BindingFlags.Instance);


protected void Page_Load(object sender, EventArgs e)
{
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = "Button1";


this.UpdatePanel1.Triggers.Add(trigger);


if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
{
triggerInitMethod.Invoke(trigger, null);
}
}也就是说在PageLoad的时候,判断刷新是否是异步刷新,如果是异步刷新,重新调用Trigger的Initialize方法,将异步刷新的提交按钮重新绑定一次







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.