2012-05-07 18 views
4

私はJavaScriptの関数からサーバー側のボタンのクリックメソッドを呼び出そうとしていますが、動作していません、どこで間違ったのか分かりますか?javascriptからC#button clickメソッドを呼び出す方法は?

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 [email protected]"; 
     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(); 
    } 

} 

どれHEL pは高く評価されます。

+0

"それは機能しません"とはどういう意味ですか?ここの誰もが心の読者です。 – asawyer

+0

@Abhishek、あなたのボタンはサーバー側のコントロールであることを理解してください。ちょうどやったやり方でコードを呼び出すことはできません。 – freebird

+0

ブラウザでJavascriptが正しく表示されていますか?何かエラーがありますか? CountDownTick()でブレークポイントを設定しようとしましたか? – mgnoonan

答えて

5

JavaScript用に公開されている__doPostBackメソッドを使用します。ボタンとイベント名のIDを渡すと、ユーザーがボタンをクリックしたときと同じように、サーバーに同じポストバックが実行されます。

ASP.NET postback with JavaScript (これはVBのコードビハインドを使用しますが、そうでなければ、私は考えて必要なものを行います)

編集:だけではなく、__doPostBack使用し、代わりにボタンの「クリック」メソッドを呼び出すのでは、明確にします。

EDITx2:また、OnClientClickの戻り値がtrueであることを確認してください。それが偽であれば、それは有効ではないと言って、それと同等だと思うし、ポストバックをしてはいけません。あなたは、クライアント側からPOSTリクエストは、まずなどの方法にあなたのクリックイベントを行うことができます

1

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

、今お使いのクライアント側からAJAX呼び出しを行うには、あなたのWebページ名は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. 
    } 
}); 
1

あなたは、

<script type="text/javascript"> 

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

幸運のようにそれを行うことができます。

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

GetPostBackEventReferenceは、あなたが他の場所からそのポストバックをトリガーすることができるようにするJavaScriptのその部分、 を取得することができます。

この資料では、JavaScriptからボタンを呼び出したい場合は、この問題に

How to call Postback from Javascript

0

を解決するのに役立ちます、ここではどのように別の方法です。

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

test.onclick = function() { 
     //your code 
関連する問題