2005-12-8 试用了一下Ajax.Net Pro,发现5.11.4.2与UltraWebGrid有冲突,改用Ajax.NET Professional pre-build 5.10.6.1,可以与UltraWebGrid一起使用,但是最后才发现Ajax并不能实现我的要求。
Ajax使用了另一个http connection来与后台处理,并不能返回当前页上的Asp.net的Web组件状态,而我需要的是使用Javascript函数来返回当前页面上的Web组件状态,对页面刷新没要求,晕,一开始就走错路了。
在google上找到一篇文章,这才是我需要的。
http://blurlzy.cnblogs.com/archive/2004/05/13/9314.html
在Form上放一个LinkButton,然后将Text属性设为空,再在script里可以用了:__doPostBack('LinkButtonID','');
休息不好就是不行啊。本来简单的东西非要搞复杂。
2005-12-9 因为需要动态生成一些功能,上面的方法还是比较笨,想了一晚上,既然是用Form的Submit提交上去的,在PageLoad里用Request取到再判断不就行了。马上试了一下,可以了。
Asp.net 自动生成的__doPostBack代码:
<!--
function __doPostBack(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase().indexOf( " netscape " ) > - 1 ) {
theform = document.forms[ " Form1 " ];
}
else {
theform = document.Form1;
}
theform.__EVENTTARGET.value = eventTarget.split( " $ " ).join( " : " );
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
// -->
</ script >
Asp.net后台代码:
{
if ( ! Page.IsPostBack)
{
// 第一次加载页面
}
else
{
// PostBack后
// __EVENTTARGET
lblInfo.Text = (Request[ " __EVENTTARGET " ] == null ) ? "" : Convert.ToString(Request[ " __EVENTTARGET " ]);
// __EVENTARGUMENT
lblCaption.Text = (Request[ " __EVENTARGUMENT " ] == null ) ? "" : Convert.ToString(Request[ " __EVENTARGUMENT " ]);
}
}
.aspx里的调用代码:
结果:
lblInfo显示值:hahaha
lblCaption显示值:param1