2015-10-17 88 views
0

我試圖調用函數後面的代碼:如何使用javascript調用代碼隱藏功能?

protected void Insert(object sender, EventArgs e) 
     { 
      blah blah blah code 
      this.BindGrid(); 
     } 

而在.aspx文件我有我的Java功能,看起來像這樣:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager> 
<asp:Button ID="Button2" runat="server" Text="Call Button Click" Style="display:none" OnClick="Insert" /> 
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClientClick="return Validate();" Width="100" /> 

     <script type="text/javascript"> 
       function Validate() 
       { 
        var id = document.getElementById("txtStudentID").value; 
        Number(id); 
        var fn = document.getElementById("txtFirstName").value; 
        String(fn); 
        var ln = document.getElementById("txtLastName").value; 
        String(ln); 
        var cls = document.getElementById("txtClass").value; 
        String(cls); 
        var rn = document.getElementById("txtRollNumber").value; 
        Number(rn); 
        My code blah blah blah 
        document.getElementById("Button2").click(); 
        PageMethods.Insert(onSuccessMethod, onFailMethod); 
       }; 
      </script> 

我需要插入到當我按下按鈕添加(可見的按鈕)時工作。 我不確定我的邏輯是否正確,或者有更好的方法。 如果有人知道熱門,我會非常感激,我可以從我的javascript調用插入函數。我嘗試了谷歌的一些東西,但沒有一個似乎工作。 由於事先

+1

檢查http://stackoverflow.com/a/4558607/2558060 – Damith

+0

嗯,我想我將不得不通過ajax,因爲我無法將我的受保護的方法更改爲公共靜態。 –

+0

檢查以下網址,它將幫助http://www.aspsnippets.com/Articles/Call-Code-Behind-Server-Side-function-from-Client-Side-code-in-ASPNet-using-C-and -VBNet.aspx http://www.codeproject.com/Articles/180355/Calling-a-code-behind-function-from-JavaScript – Ashokreddy

回答

-2

好它原來是ONCLICK和的OnClientClick的一個簡單的問題。 OnClientClick是首先執行的功能,一旦完成則進入OnClick功能。在一天結束的時候這裏是我結束了:後面 代碼:

public void Validate(object sender, EventArgs e) 
{ 
     boring code blah blah blah 
} 

這裏的ASPX代碼

<script id="validity" type="text/javascript"> 

     function Validate() { 

      Blah blah blah boring code 
     } 
    </script> 
    <asp:Button ID="btnAdd" runat="server" OnClientClick="return Validate();" OnClick="Validate" 
      Text="Add" Width="100" /> 

我使用的OnClientClick執行基於JavaScript的驗證。一旦完成,我會執行服務器端的dataupload。一旦完成似乎很基礎。我希望它可以幫助未來的其他人

2

你可以試試這個:

Page.ClientScript.RegisterStartupScript(this.GetType(),"CallMyFunction","Validate()",true); 
+0

感謝您的快速回復,你能告訴我,如果我添加這裏面我的功能或在代碼的開頭(aspx.cs)? –

+0

好吧,它不工作,頁面剛剛重新加載甚至不會進入插入功能。 :( –

+0

添加這裏面的按鈕的事件方法,它應該工作 –

1

我們可以使用[的WebMethod]爲此我們想從JavaScript調用的方法。根據我的知識,這應該是一個靜態方法。 我們可以通過使用

PageMethods.MethodNameOnCodeBehindClass() 

從JavaScript調用該方法因此有可能是您的方案以創造出可以叫你期望的方法是靜態方法。

+0

這是我的第一個想法,但我似乎我甚至無法用Javascript調用公共靜態方法,更不用說從public static調用protected。 –

+0

這就是我們可以做的好友..如果你同意從Javascript調用一個公共靜態方法,因爲最近我有順便說一下,我沒有得到你的評論:p,你究竟想說什麼? –

1

你還可以嘗試:

ScriptManager.RegisterClientScriptBlock(this,Gettype(this),"","validate();",true); 
相關問題