熟悉asp.net事件机制的人都知道,在aspnet生成的页面里有两个隐藏域。
第一个“__EVENTTARGET”保存着要触发事件的那个控件的ID,第二个在某些控件触发事件时用来保存事件的名称的某个参数。当页面上的某个控件如:
被点击时,脚本会自动将“btn_ItemAdd”赋值给__EVENTTATGT,然后再用Submit()提交整个页面。在这里很自然我们就会想到替换aspnet页面自带的脚本,换成异步AJAX的方式提交页面。下面是本人整理后的替换代码,其中使用Jquery和Jquery.form插件。
/*
eventTarget:就是要触发事件的控件ID
eventArgument:一些参数信息,例如gridview的SelectIndexChanged事件就需要把该参数设为Select$1,1为selectrowindex
callBack:Ajax请求完成后要调用的函数(可选)
callBackArg:上面函数调用时传入的参数(可选)
*/
functionajaxEvent(eventTarget,eventArgument,callBack,callBackArg){
try{
vartheForm=document.forms[0];
//如果页面没有那两个重要的HiddenField则添加
if(!document.getElementById("__EVENTTARGET")){
varMy__EVENTTARGET="";
$(My__EVENTTARGET).appendTo("form");
}
if(!document.getElementById("__EVENTARGUMENT")){
varMy__EVENTARGUMENT="";
$(My__EVENTARGUMENT).appendTo("form");
}
$("#__EVENTTARGET").val(eventTarget);
$("#__EVENTARGUMENT").val(eventArgument);
}
catch(e){
alert(e);
}
try{
$(theForm).ajaxSubmit(
function(dataFormServer){
varreturnText=dataFormServer.split("::");
if(returnText[0]=="False"){
alert(returnText[1]);
return;
}//如果要返回错误信息,我们约定返回的信息以False::开头,这样可以在这里统一处理出错
if(callBack){
if(callBackArg){//如果传入了参数则用用户传入的参数调用回调函数
callBack(callBackArg);
}
else{//默认将服务器返回的信息传递给回调函数
callBack(dataFormServer);
}
}
}
);
}
catch(e){
}
returnfalse;//防止页面以submit方式提交
}
有了上面的函数后,我们设置按钮的onclientclick属性为ajaxEvent("btn_ItemAdd","");代码如下
需要注意的是上述代码要成功运行需要在页面里添加几个JS引用
这些都是Jquery东西,在网上很容易下到。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。