GridView:如何在行更新时每次增加一个单元格的值?

时间:2012-04-09 19:03:04

标签: c# asp.net sql

我有一个简单的gridview。 SqlDataSource将tableData绑定到gridview。

在行更新时,我试图将一个单元格的值(类型为int)增加一个。 这是我的代码但不起作用:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            GridViewRow row = GridView1.Rows[e.RowIndex];
            string str = ((TextBox)(row.Cells[8].Controls[0])).Text;
            int conv = Convert.ToInt32(str);
            int set = conv + 1;
            string conn = "conn string";
            string sqlQuery = "UPDATE TableName SET Total =@Total";
            using (SqlConnection dataConnection = new SqlConnection(conn))
            {
                using (SqlCommand dataCommand = new SqlCommand(sqlQuery, dataConnection))
                {
                    dataCommand.Parameters.AddWithValue("Total", set);
                    dataConnection.Open();
                    dataCommand.ExecuteNonQuery();
                    dataConnection.Close();

                }
            }

        }

我不知道为什么不工作,我需要将当前编辑行的单元格增加一个。

由于

2 个答案:

答案 0 :(得分:0)

根据您在此处提供的内容,您实际上从未添加任何内容

int set = stra + 1;

dataCommand.Parameters.AddWithValue("Total", set);

试试这个

int stra = stra + 1;

dataCommand.Parameters.AddWithValue("Total", stra);

答案 1 :(得分:0)

  • 由于您没有提供密钥
  • ,因此您正在更新所有行而不是仅编辑过的行
  • 您应该使用e.NewValues来检索修订后的值

    string sqlQuery = "UPDATE TableName SET Total=@Total WHERE ID=@ID";
    using (SqlConnection dataConnection = new SqlConnection(conn))
    {
        using (SqlCommand dataCommand = new SqlCommand(sqlQuery, dataConnection))
        {
            var total = (int)e.NewValues["Total"] + 1;
            dataCommand.Parameters.AddWithValue("Total", total);
            dataCommand.Parameters.AddWithValue("ID", (int)e.Keys["ID"].Value);
            dataConnection.Open();
            dataCommand.ExecuteNonQuery();
        }
    }