繁体   English   中英

如何从datagridview删除选定的行?

[英]How to delete a selected row from datagridview?

if (dgvProductCatalog.Rows.Count > 1 && dgvProductCatalog.SelectedRows[0].Index != dgvProductCatalog.Rows.Count - 1)

{
 cmd = new SqlCommand("DELETE FROM Products WHERE ProductId= " + dgvProductCatalog.SelectedRows[0].Cells[0].Value.ToString() + " " , connection);
                try
                {
                    connection.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    connection.Close();
                    dgvProductCatalog.Rows.RemoveAt(dgvProductCatalog.SelectedRows[0].Index);
                    MessageBox.Show("Record Deleted Successfully!");
                    DisplayData();
                    ClearData();
                }
}

我在按钮单击上使用上面的代码以删除选定的行,但我收到“ System.ArgumentOutOfRangeException:索引超出范围。必须为非负数,并且小于集合的大小。 ”这里做错了吗?

谢谢!

我会改用currentRow

dgvProductCatalog.CurrentRow.Cells[0].Value

然后

dgvProductCatalog.Rows.RemoveAt(dgvProductCatalog.CurrentRow.Index) 

要么

dgvProductCatalog.Rows.RemoveAt(dgvProductCatalog.SelectedCells[0].RowIndex) 

另外,当您在使用时,我也会更改此行

if (dgvProductCatalog.Rows.Count > 1 && dgvProductCatalog.SelectedCells.count > 0)

我的猜测是,当selectedCells.Count = -1时,上述if语句正在运行

最后,作为建议,而不是

WHERE ProductId= " + Cell.Value + " "

我会用

WHERE ProductId='" + Cell.Value + "'" 

'对于减轻可能的错误很重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM