【问题标题】:Updating dropdown list in gridview is not working, value is not being updated in database在 gridview 中更新下拉列表不起作用,数据库中的值未更新
【发布时间】: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


【解决方案1】:

我找到了解决办法,代码如下:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {

        DropDownList ddlCurrentDropDownList = (DropDownList)sender;
        GridViewRow grdrDropDownRow = ((GridViewRow)ddlCurrentDropDownList.Parent.Parent);
        DropDownList ddList = (DropDownList)grdrDropDownRow.FindControl("ddlstatus");
        statusval = ddList.SelectedValue.ToString();
        Session[statusval] = statusval;    
    }
  protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {

        GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
        string rname = (string)row.Cells[1].Text;


        string ConnectionStringn = ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;
        using (SqlConnection con = new SqlConnection(ConnectionStringn))
        {
            using (SqlCommand cmd = new SqlCommand("UPDATE driver SET status=@status WHERE driverid=@driverid"))
            {
                cmd.Connection = con;
                cmd.Parameters.AddWithValue("@status",statusval);
                cmd.Parameters.AddWithValue("@driverid",rname);

                con.Open();
                cmd.ExecuteNonQuery();
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    相关资源
    最近更新 更多