簡體   English   中英

如何從javascript調用c#按鈕單擊方法?

[英]How to call c# button click method from javascript?

我試圖從javascript函數調用服務器端按鈕單擊方法,但它不工作,我可以知道我在哪里做錯了嗎?

aspx代碼:

<asp:Button ID="ButtonFns" Name="ButtonFns" runat="server" Text="Finish" 
            OnClientClick ="CountDownTick()" class="finish" onclick="ButtonFns_Click" />

Javascript代碼:

function CountDownTick() {
if (_currentSeconds <= 0) {
    document.getElementById('<%= ButtonFns.ClientID %>').click();        
return;
}   
SetCountdownText(_currentSeconds-1);
window.setTimeout("CountDownTick()", 1000);
}

C#按鈕點擊:

protected void ButtonFns_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Examination.mdf;Integrated Security=True;User Instance=True");
    try
    {
        con.Open();
        string snm;
        string Em;
        string Sx;
        string uname = Session["status"].ToString();
        string qry = "SELECT SName,Email,Sex FROM Students WHERE Uname=@uname";
        SqlCommand cm = new SqlCommand(qry, con);
        cm.Parameters.AddWithValue("@uname", uname);
        SqlDataReader reader = cm.ExecuteReader();
        while (reader.Read())
        {
            snm = reader["SName"].ToString();
            Em = reader["Email"].ToString();
            Sx = reader["Sex"].ToString();
            if (snm != null && Em != null && Sx != null)
            {
                Session["snm"] = snm.ToString();
                Session["em"] = Em.ToString();
                Session["sx"] = Sx.ToString();
                Session["uname"] = uname;
                Session["RAns"] = LabelRitAns.Text;
                Session["Tatt"] = LabelTotAtt.Text;
                Server.Transfer("YourScore.aspx");
                break;
            }
        }

    }
    catch (Exception emsg)
    {
        LabelErr.Text= emsg.Message.ToString();
    }
    finally
    {
        con.Close();
    }

}

任何幫助,將不勝感激..

使用為JavaScript公開的__doPostBack方法。 如果傳入按鈕的ID和事件名稱,它實際上會執行與服務器相同的回發,就像用戶單擊按鈕一樣。

使用JavaScript的ASP.NET回發 (這使用VB代碼隱藏,但我認為你需要做其他事情)

編輯:只是澄清,而不是調用按鈕的“單擊”方法,而是使用__doPostBack。

EDITx2:另外,請確保您的OnClientClick返回值為true。 如果它是假的,我認為它相當於說它無效並且不應該做回發。

ButtonFns.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(ButtonFns, "Your postback argument"));

GetPostBackEventReference允許您獲取該段JavaScript,以便您可以從其他地方觸發該回發。

本文將幫助您解決此問題

如何從Javascript調用回發

您可以從客戶端發出POST請求,首先將您的click事件設置為方法:

[WebMethods]
public static void ClickEvent()
{
//do you stuff
}

現在從客戶端進行ajax調用,讓你的網頁名稱為Default.aspx:

$.ajax({
  type: "POST",
  url: "Default.aspx/ClickEvent",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Do something interesting here.
  }
});

在你的情況下,你可以這樣做,

    <script type="text/javascript">

    function ImitatePressButton() {
            __doPostBack('ButtonFns', '');
    }
</script>

祝好運。

如果你想從javascript調用一個按鈕,這是另一種方式。

 var test = document.getElementbyId("YourButtonName");

 test.onclick = function() {
        //your code

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM