T_T : [之所以需要用到以下方式来在客户端执行js脚本是因为ASP.NET中的OnClick和OnClientClick的机制问题。(Html页面中的元素(比如button)的onclick不止绑定一个方法,其中绑定的方法有OnClientClick注册的,也有OnClick注册的,关键是OnClientClick注册的方法总是被放在OnClick注册的方法前面,如下例子)]
Confusion:
1 <asp:Button ID="btnSave" OnClick="btnSave_Click" OnClientClick="javascript:RefreshGrid();" runat="server" /> 2 3 ########################################################################################################################################### 4 html页面结果: 5 6 <input type="submit" name="ctl00$MainContent$btnSave" value="保存" onclick="javascript:RefreshGrid(); WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$btnSave", "", true, "", "", false, false))" id="ctl00_MainContent_btnSave" class="button" />
#############################################################################################################################################
解决方法:
Template:
1 var jsCode= "<script language='javascript'>(function (){ /*你的js代码*/})(); </script>"; 2 if (!this.ClientScript.IsStartupScriptRegistered(this.GetType(), "jsCode")) 3 { 4 this.ClientScript.RegisterStartupScript(GetType(), "jsCode", jsCode); 5 }
Example:
1 var refresh = "<script language='javascript'>(function (){ window.parent.RefreshGrid();})(); </script>"; 2 if (!this.ClientScript.IsStartupScriptRegistered(this.GetType(), "refresh")) 3 { 4 this.ClientScript.RegisterStartupScript(GetType(), "refresh", refresh); 5 }
|
请发表评论