2012-11-05 145 views
-1

我有一个kendo下拉列表和选定的id值我想更新数据库上的特定行的数据按钮单击event.but我的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)应该是SelectedValue而不是SelectedIndex。

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

你的页面加载也没有多大意义。看起来您正在调用Update SP来填充数据读取器。 – Fred

+0

采取整个如果阻止页面加载或包装在一个if(!IsPostBack)更新发生之前,您的页面正在重新填充控件。 – Fred

+0

当我添加!ispostback在页面加载时只有第一个id是一次又一次的更新。没有选择的id被更新。该怎么办?请帮助我 – user1799611