4

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();
    }

}

どんな助けでも大歓迎です..

4

5 に答える 5

5

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

JavaScript を使用した ASP.NET ポストバック (これは VB コード ビハインドを使用しますが、それ以外の場合は必要なことを行います)

編集: 明確にするために、ボタンの「クリック」メソッドを呼び出す代わりに、代わりに __doPostBack を使用します。

EDITx2: また、OnClientClick の戻り値が true であることを確認してください。false の場合は、有効ではなく、ポストバックを行うべきではないと言っているのと同じだと思います。

于 2012-05-07T12:30:54.437 に答える
2
ButtonFns.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(ButtonFns, "Your postback argument"));

GetPostBackEventReference を使用すると、JavaScript の一部を取得できるため、別の場所からポストバックをトリガーできます。

この記事は、この問題を解決するのに役立ちます

Javascript から Postback を呼び出す方法

于 2012-05-07T13:24:05.173 に答える
1

あなたの場合、あなたはそのようにすることができます、

    <script type="text/javascript">

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

幸運を。

于 2012-05-07T12:35:23.570 に答える
1

クライアント側から POST リクエストを作成し、まずクリック イベントを次のようにメソッドにすることができます。

[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.
  }
});
于 2012-05-07T12:32:02.477 に答える
0

JavaScript からボタンを呼び出したい場合は、別の方法があります。

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

 test.onclick = function() {
        //your code
于 2012-05-07T21:42:37.203 に答える