0

我有一个简单的网格视图。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();

                }
            }

        }

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

谢谢

4

2 回答 2

0

根据您在此处提供的内容,您永远不会实际添加任何内容

int set = stra + 1;

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

试试这个

int stra = stra + 1;

dataCommand.Parameters.AddWithValue("Total", stra);
于 2012-04-09T19:07:13.067 回答
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();
        }
    }
    
于 2012-04-09T19:17:45.053 回答