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 }