首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>.NET2.0>ASP.NET2.0中控件的简单异步回调
ASP.NET2.0中控件的简单异步回调
来源: 发布时间:2007-09-14 发布人: 浏览: 人次   字体: [ ]  
虽然已经有了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");
}

↑上一篇:没有了
相 关 文 章   发布商链接
·C#2.0纯数学方法递归实现货币数字转...
·ASP.NET 2.0 中的母版页详解
·ASP.NET2.0中轻松实现网站换肤功能
·如何在ASP.NET 2.0中创建母版页
·ASP.NET2.0中GridView控件的隐藏列的...
·ASP.NET中“无法加载 DLL 找不到指...
·ASP.NET 2.0加密网站配置文件web.con...
·asp.net改变VS2005中屏保,实现字幕滚...
·实用小知识:contentEditable小解用...
·VS2005利用Excel组件操作Excel全攻略
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·实例讲解在.net2.0中对config
·包含32种常见的用户输入验证...
·asp.net不使用服务器控件的情
·如何更改单个aspx页面的编码...
·实例讲解如何设置gridview的...
·asp.NET 2.0中引发CSS失效问...
·GridView通过模板列实现第一...
·VS2005利用TreeView控件和递...
·DataView对象获取数据行相应...
·GridView中固定列的两种方法
·为GridView控件添加分页导航...
·Net2.0中使用母版页及其母版...
·实例解决GridView中弹出对话...
·Gridview控件字段内容过长的...
·图解ASP.NET下AJAX安装(VS20...
热 门 文 章
·asp.net(C#)弹出窗口返回值并...
·VS2005利用Excel组件操作Exce...
·AJAX实现无刷新适时显示gridV...
·gridview表头固定并实现打印...
·Js获取radiobuttonlist选中值...
·gridview绑定数据显示的各种...
·ASP.NET中“无法加载 DLL 找...
·asp.net2.0回发或回调参数无...
·asp.net文件下载防止乱码出现...
·实现gridview内容打印功能的...
·图解ASP.NET下AJAX安装(VS20...
·ASP.NET多个用户控件回车提交...
·实例解决GridView中弹出对话...
·gridview空数据源时仍显示表...
·asp.net中GridView每个单元格...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .