2012-05-07 3 views
4

자바 스크립트 함수에서 서버 쪽 단추 클릭 메서드를 호출하려고하지만 작동하지 않습니다. 어디에서 잘못했는지 알 수 있습니까?자바 스크립트에서 C# button click 메서드를 호출하는 방법은 무엇입니까?

영문 코드 :

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

자바 스크립트 코드 :

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

자바 스크립트가 브라우저에서 올바르게 렌더링 되었습니까? 오류가 있습니까? CountDownTick()에서 중단 점을 설정해 보셨습니까? – mgnoonan

답변

5

JavaScript 용으로 노출 된 __doPostBack 메서드를 사용하십시오. 버튼과 이벤트 이름의 ID를 전달하면 사용자가 버튼을 클릭 한 것처럼 서버에 동일한 포스트 백을 수행합니다.

ASP.NET postback with JavaScript (이 코드 숨김 VB를 사용하지만, 그렇지 않으면 당신은 내 생각은 필요하지 않습니다)

편집 : 그냥 대신 __doPostBack 사용하는 대신 버튼의 "클릭"방법을 호출하는, 명확하게.

EDITx2 : 또한 OnClientClick 반환 값이 true인지 확인하십시오. 그것이 틀렸다면, 유효하지 않다고 말하는 것에 상응한다고 생각하고 다시 게시해서는 안됩니다. 웹 페이지의 이름을 Default.aspx입니다하자

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

이제 클라이언트 측에서 Ajax 호출합니다

당신은 당신의 클라이언트 측에서 POST 요청을 할 수
1

는 첫째로 방법에 클릭 이벤트를합니다 귀하의 경우에는

$.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 당신이 다른 곳에서이 포스트 백을 트리거 할 수 있도록 자바 스크립트의 조각, 을 얻을 수 있습니다.

이 문서에서는 자바 스크립트에서 버튼을 호출 할 경우이 문제를

How to call Postback from Javascript

0

를 해결하는 데 도움이 될 것입니다, 어떻게 여기 또 다른 방법입니다.

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

test.onclick = function() { 
     //your code 
관련 문제