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

Reading number is top 10 articles
VS,2008,中文版,(90天评估)_[Asp.Net教程]
在网页中插入媒体播放器详细参考
SQL数据库高级教程:SQL SELECT INTO 语句_[SQL Server教程]
ASP.NET2.0数据操作之创建数据访问层(3)_[Asp.Net教程]
用Visual,C#实现文件下载_[Asp.Net教程]
Visual,C#,2.0泛型编程基础_[Asp.Net教程]_0
Asp.net中创建和使用Ado.net_[Asp.Net教程]
delphi多页组件(TPageControl)使用方法详解
asp.net2.0中Server对象的方法和属性
二十 控制表格 Mastering Tables _[Html教程]
Reading number is top 10 pictures
两个妞在等世界上最短的火车
Fender Bender that so horrifying1
2012 national geographic daily picture8
Fat bird to fly
So beauty, will let you spray blood3
Azusa Yamamoto2
一万二一支的万珂,用得真心肉疼。
Wear bikinis cock
Tie a large font of mouse
The Soviet union swimsuit exposure in the 70 year1
Download software ranking
Boxer vs Yellow4
Eclipse 4.2.2 For Win64
Detective task-the top secret prostitution files
Tram sex maniac 2 (H) rar bag7
传奇私服架设教程
美女写真2
Unix video tutorial19
Dance with duck(male prostitution)
ASP.NET.2.0.XML.高级编程(第3版)
asp.net技术内幕
delv published in(发表于) 2014/1/24 9:03:45 Edit(编辑)
ASP.NET2.0中控件的简单异步回调_[Asp.Net教程]

ASP.NET2.0中控件的简单异步回调_[Asp.Net教程]

ASP.NET2.0中控件的简单异步回调_[Asp.Net教程]

虽然已经有了ASP.NET AJAX了,最近学习ASP.NET控件的时候,逐步理解了原始的控件异步回调(代码取自《ASP.NET 2.0 高级编程》):


首先,在Render事件中添加好一个事件


protected override void RenderContents(HtmlTextWriter output)
{
output.RenderBeginTag(HtmlTextWriterTag.Div);
output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
output.AddAttribute(HtmlTextWriterAttribute.Id, this.ClientID);
output.AddAttribute(HtmlTextWriterAttribute.Name, this.ClientID);
output.AddAttribute(HtmlTextWriterAttribute.Value, this.Text);
output.AddAttribute("OnBlur", "ClientCallback();");
this.AddAttributesToRender(output);
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();
output.RenderEndTag();
}


这里最重要的就是output.AddAttribute("OnBlur","ClientCallback();");


然后在OnPreRender事件中,添加如下代码:


protected override void OnPreRe
nder(EventArgs e)
{
//Page.ClientScript.RegisterClientScriptInclude("UtilityFunctions", "JScript.js");
Page.ClientScript.RegisterStartupScript(typeof(Page), "ControlFocus", "document.getElementById('" + this.ClientID + "').focus();", true);
Page.ClientScript.RegisterStartupScript(typeof(Page),"ClientCallback","function ClientCallback() {"+"args=document.getElementById('"+this.ClientID+"').value;"+Page.ClientScript.GetCallbackEventReference(this,"args","CallbackHandler",null,"ErrorHandler",true)+"}");
//向服务器发送请求,由服务器端生成回调的客户端脚本。
}


也就是在服务器端生成客户端代码,注意最后一个方法GetCallbackEventReference,我理解的是在服务器端捕捉了客户端的请求之后,生成相应的客户端脚本,在服务器端回调的时候,客户端决定用什么函数处理回调和错误。


服务器端实现接口的一个方法,也就是接收到客户端的请求之后,由服务器端先处理,然后再把结果和相应代码发回客户端。


#region ICallbackEventHandler Members
public string RaiseCallbackEvent(string eventArgument)
{
int result;
if (!Int32.TryParse(eventArgument, out result))
throw new Exception("The method is not implemented.");
return "Valid Data";
}
#endregion 最后,在jscript.js文件中写好相应的回调处理函数即可:
var args;
var ctx;
function ValidateText(ctl)
{
if(ctl.value=='')
{
alert("Please enter a value");
ctl.focus();
}
}
function CallbackHandler(args,ctx)
{
alert("The data is valid");
}
function ErrorHandler(args,ctx)
{
alert("The data is not a number");
}


出处:博客网







添加到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.