BS结构中不管是服务器控件还是客户端控件如果在前端界面写代码

例如:

<a id="a" runat="server"  href="#" onclick="js函数" onserverclick="服务器端函数" >超级链接</a>

还是 <asp:Button id="button" runat="server" onclick="服务器端函数" OnClientClick="js函数" text="按钮"/>

都会先执行JS函数后执行服务器端函数

但是有些时候我们需要先执行服务器端函数后执行JS函数

解决方案:

<asp:Button ID="btnqqq" runat="server" OnClick="btn_back"    Text="button"/>

后台代码:

 protected void btn_back(object sender, EventArgs e)
    {
        //添加要执行的服务器端代码
        //添加要执行的JS代码

  string str = "<script language='javascript' type='text/javascript'> window.opener.location.href = window.opener.location.href;if (window.opener.progressWindow){window.opener.progressWindow.close(); } window.close();  </script>";//注意:要执行的JS代码不要写进JS函数中
        //RegisterStartupScript("ss", str);
        RegisterClientScriptBlock("aa", str);
    }

RegisterStartupScript("ss", str);
RegisterClientScriptBlock("aa", str);

上面两个方法都能执行JS代码,不同的是RegisterStartupScript("ss", str);方法是在程序执行到这一句代码的时候就执行

定义好的js代码,此时页面没有完全的加载完,容易出现未将对象引用到实例的错误,

而RegisterClientScriptBlock("aa", str);方法是将代码在页面全部加载完后添加到页面的尾部,比上面的要保险,当然,也要根据不同的需要进行选择,不可一概而论。

 

posted on 2010-03-12 10:08  秦威龙  阅读(1391)  评论(0编辑  收藏  举报