【发布时间】:2015-02-18 13:37:19
【问题描述】:
我在其中一行中有一个 gridview 和一个下拉列表,我能够成功地从数据库中检索值,但是在更改和更新下拉列表值时我无法更新它。
我的 C# 文件是:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
{
DropDownList ddList = (DropDownList)e.Row.FindControl("ddlstatus");
DataRowView dr = e.Row.DataItem as DataRowView;
ddList.SelectedItem.Text = dr["status"].ToString();
ddList.SelectedValue = dr["status"].ToString();
// Response.Write("the selected value is"+ddList.SelectedValue);
val = e.Row.Cells[1].Text.ToString();
int id = int.Parse(val);
//Response.Write(val);
string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;
using (SqlConnection con = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("UPDATE driver SET status = @status WHERE driverid = @driverid"))
{
cmd.Connection = con;
cmd.Parameters.AddWithValue("@status", ddList.SelectedValue);
cmd.Parameters.AddWithValue("@driverid", id);
con.Open();
cmd.ExecuteNonQuery();
}
}
}
}
}
任何帮助/指导,谢谢
【问题讨论】:
-
ID 和状态值是您所期望的吗?你有错误吗?
-
问题是,您确定您从 RowDataBound 事件中获得了正确的值吗?还要确保在 ExecuteNonQuery 之后关闭连接(即使您正在使用 using 块,这将关闭/处置对象,在执行命令后立即关闭连接仍然是一个好习惯)另外,您是什么类型的数据库使用?本地数据库? SQLExpress?您是否在连接字符串中附加了数据库?您是否在每次构建时都覆盖您的 SDF 文件?
-
@Ahmedilyas 你能解释一下为什么在
using块中显式关闭连接是“好习惯”吗? -
@stuartid 是的,当我打印 vlaues 时,我得到了我想要的确切值,我没有得到任何错误 stuart
-
@Ahmed ilyas 我正在使用 SQL Server,是的,我在连接字符串中附加了数据库。覆盖 SDF 文件,我不明白那部分
标签: c# asp.net sql-server