选中的Gridview行未使用复选框更新

时间:2016-06-01 10:54:41

标签: c# asp.net gridview

我想更新已检查过的行,然后重新加载gridview。

enter image description here

我使用一个按钮和一个用于选择行的复选框来更新它。

protected void btnProceed_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in GridView1.Rows)
    {
        CheckBox chkRow = (row.Cells[0].FindControl("chkRow") as CheckBox);
        if (chkRow.Checked)
        {
            con.Open();
            cmd = new SqlCommand(@"UPDATE JobQuotations1
                                    SET TransactionStatus = @Done
                                    WHERE TransactionID = @Tid
                                    AND TransactionNum = @num", con);

            cmd.Parameters.AddWithValue("@Done", "Done");
            cmd.Parameters.AddWithValue("@Tid", GridView1.SelectedRow.Cells[1].ToString());
            cmd.Parameters.AddWithValue("@num", GridView1.SelectedRow.Cells[2].ToString());

            cmd.ExecuteNonQuery();
            con.Close();
            LoadDataGrid();
        }
    }
}

当我点击按钮时,没有发生任何事情。

3 个答案:

答案 0 :(得分:2)

替换此

.table-striped

用这个

GridView1.SelectedRow.Cells[1].ToString()
GridView1.SelectedRow.Cells[2].ToString()

您想要行{1}的行单元格,而GridView1.SelectedRow.Cells[1].Text GridView1.SelectedRow.Cells[2].Text 将返回单元格类型的类型信息。

此外,正确的方法应该是在循环中获取当前行的单元格值,因为您已经拥有当前Text

ToString

答案 1 :(得分:0)

cmd.Parameters.AddWithValue("@Tid", row.Cells[1].Text);
cmd.Parameters.AddWithValue("@num", row.Cells[2].Text);

修改添加参数的代码。同时检查通过调试发送到数据库服务器的查询。尝试直接在数据库服务器上运行相同的查询,看看是否有任何行受到影响。

答案 2 :(得分:0)

使用

   foreach (DataGridViewRow item in GridView.Rows)
           {    
             if (Convert.ToBoolean(item.Cells["ColumnCheckBoxName"].Value) == true)
                  {
                     long DocId = (long)item.Cells[0].Value;
                  }
            }