2012-11-05 12 views
-1

검도 드롭 다운이 있고 선택된 id 값에서 버튼 클릭 이벤트에서 데이터베이스의 특정 행의 데이터를 업데이트하려고합니다. 내 dat이 업데이트되지 않고 이전 값이 다시 표시되고 다시 해봐. 나에게 그걸 어떻게 할 지 제안 해주세요. 내 코드가버튼을 클릭 할 때 데이터베이스에서 데이터 업데이트

<script src="Js/jquery1.7.1.min.js" type="text/javascript"></script> 
<script src="CSS/kendo.min.js" type="text/javascript"></script> 
</head> 
<body> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
    $("#multi").kendoDropDownList(); 
    $("#editor").kendoEditor(); 
}); 
</script> 
<form id="form1" runat="server"> 
<div> 
    Select Template: <select id="multi" runat="server"></select> 
</div> 
<br /> 
<div> 
    Template Name: <input type="text" id="txtName" name="Name" runat="server" /> 
</div> 
<div> 
Description:<textarea name="comments" id="txtComment" cols="25" rows="5" 
runat="server"></textarea> 
<br /> 
</div> 
<div> 
Active: <input type="checkbox" id="chkActive" name="vehicle" runat="server" /> 
</div> 
<div id="example" class="k-content"> 
<textarea id="editor" rows="10" cols="30" style="width:740px;height:440px" 
runat="server"></textarea> 
</div> 
<div> 

<button type="button" id="btnUpdate" runat="server" onserverclick="  
btnUpdate_onclick" >Save</button> 

</div> 
</form> 
</body> 

내 .cs 코드는 드롭 다운 메뉴에서 올바른 값은 코드 숨김 방법에가는 여부

protected void Page_Load(object sender, EventArgs e) 
{ 


    Bind(); 
} 

private void Bind() 
{ 
    SqlConnection con = new SqlConnection("Data Source=ST0022;Initial 
Catalog=QuickMove_Globe;User ID=sa;Password=good"); 
    SqlDataAdapter da = new SqlDataAdapter(); 
    DataSet ds = new DataSet(); 
    da.SelectCommand = new SqlCommand("Select * from Templates", con); 
    con.Open(); 
    da.SelectCommand.ExecuteNonQuery(); 
    da.Fill(ds); 
    con.Close(); 
    multi.DataTextField = "ID"; 
    multi.DataValueField = "Name"; 
    multi.DataValueField = "Description"; 

    multi.DataSource = ds.Tables[0]; 
    multi.DataBind(); 
} 

protected void btnUpdate_onclick(object sender, EventArgs e) 
{ 



    SqlConnection con = new SqlConnection(@"Data Source=ST0022;Initial 
Catalog=QuickMove_Globe;Persist Security Info=True;User ID=sa;Password=good"); 
    SqlCommand cmd= new SqlCommand("Update_Temp", con); 

    cmd.CommandType = CommandType.StoredProcedure; 
    //passing parameters 
    cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(multi.SelectedIndex)); 
    cmd.Parameters.AddWithValue("@Name",Convert.ToString(txtName.Value)); 
    cmd.Parameters.AddWithValue("@Description", Convert.ToString(txtComment.Value)); 
    cmd.Parameters.AddWithValue("@Content", Convert.ToString(editor.Value)); 
    cmd.Parameters.AddWithValue("@Active", (chkActive.Value).ToString()); 

    SqlDataAdapter da = new SqlDataAdapter(); 

    da.UpdateCommand=cmd; 
    con.Open(); 






    cmd.ExecuteNonQuery(); 
    con.Close(); 

} 

답변

0

확인이다. 다음과 같이 버튼 명령을 변경할 수 있습니다 :

<asp:Button ID="btnUpdate" runat="server" 
      onclick="btnUpdate_Click" Text="Save" /> 
+0

하지만 html 버튼을 사용하고 있습니다. 나는 html 버튼만을 사용하여 중단 점을 넣은 후 – user1799611

+0

과 관련이 있다고 말했지만, 업데이트 코드를 치는 중이지만 데이터베이스에 변경 사항이 없습니다. 내가해야하는 것? 도와주세요. – user1799611

+0

저장된 프로그램의 Update_Temp 내용을 게시 할 수 있습니까? – Fred

0

일부 오류 처리를 추가하는 방법에 대해 생각해 볼 수 있습니다. 저장 프로 시저에서 RETURN이 필요 없습니다. 당신이해야 할 다른 일은 당신의 결속을 정리하는 것입니다. 드롭 다운에 잘못된 값을 바인딩하고 있습니다. 값은 ID 및 텍스트로 표시되어야합니다. 그런 다음 Convert.ToInt32 (multi.SelectedIndex) 업데이트가 SelectedIndex가 아닌 SelectedValue 여야합니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Bind(); 
    } 

} 



     protected void btnUpdate_onclick(object sender, EventArgs e) 
    { 



     SqlConnection con = new SqlConnection(@"Data Source=ST0022;Initial 
Catalog=QuickMove_Globe;Persist Security Info=True;User ID=sa;Password=good"); 
     SqlCommand cmd = new SqlCommand("Update_Temp", con); 

     cmd.CommandType = CommandType.StoredProcedure; 
     //passing parameters 
     cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(multi.SelectedIndex)); 
     cmd.Parameters.AddWithValue("@Name", Convert.ToString(txtName.Value)); 
     cmd.Parameters.AddWithValue("@Description", Convert.ToString(txtComment.Value)); 
     cmd.Parameters.AddWithValue("@Content", Convert.ToString(editor.Value)); 
     cmd.Parameters.AddWithValue("@Active", (chkActive.Value).ToString()); 
     con.Open(); 

     cmd.ExecuteNonQuery(); 
     con.Close(); 

     Bind(); 
    } 
+0

페이지로드가별로 중요하지 않습니다. datareader를 채우기 위해 Update SP를 호출하는 것 같습니다. – Fred

+0

전체 페이지 가져 오기 페이지 밖으로로드하거나 if (! IsPostBack)로 감싸십시오. 업데이트가 발생하기 전에 페이지에 컨트롤이 다시 채워집니다. – Fred

+0

내가 추가했을 때! ispostback 페이지에서 첫 번째 ID 만 반복해서 업데이트 중입니다. 선택한 ID가 업데이트되지 않았습니다. 어떻게해야합니까? 제발 도와주세요 – user1799611

관련 문제