编程道

My Links

Blog Stats

News

使用Javascript调用回调函数__doPostBack()

     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代码:

<script language="javascript">
<!--
    
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后台代码:

        private void Page_Load(object sender, System.EventArgs e)
        {
            
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里的调用代码:

<href="javascript:__doPostBack('hahaha','param1')">测试</a>

    结果:
    lblInfo显示值:hahaha
    lblCaption显示值:param1


 

posted on 2005-12-08 17:44 编程道 阅读(...) 评论(...) 编辑 收藏