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);方法是将代码在页面全部加载完后添加到页面的尾部,比上面的要保险,当然,也要根据不同的需要进行选择,不可一概而论。