隐藏除DataGridView中正在编辑的行之外的所有行

时间:2011-10-19 15:09:07

标签: c# .net winforms datagridview datatable

我想减少用户编辑错误记录的概率,所以一旦他们开始在datagridview中编辑一行我想隐藏所有行。

我试过了:

foreach (DataGridViewRow dgvr in rdGridView.Rows)
{
    if (dgvr.Index != e.RowIndex )
    {
        dgvr.DefaultCellStyle.BackColor = Color.DarkGray;
        dgvr.ReadOnly = true
    }
}

但这并没有给予很多保护。

我可以更新DataView以仅显示该行并再次将数据视图分配给datgridview,但这会将焦点从单元格中移出,并且单元格不会进入编辑模式。

在上面的foreach循环中执行dgvr.Visible = false也会产生异常

3 个答案:

答案 0 :(得分:0)

也许您应该尝试在DataGridView中加载数据,但是使用字段来加载要编辑的行中的数据。这样,您可以将DataGridView设置为ReadOnly,然后单击,您可以将数据从可编辑字段复制到文本框,允许用户编辑和保存。

答案 1 :(得分:0)

我会寻求更多不同的解决方案。双击一行(无论你打算编辑一行的整个单元格,无论哪个单元格)都打开一个新的Form(小窗口),里面有textBoxes和一个按钮Save。 textBoxes的数量取决于要编辑的列数。 因此,将所有数据从DGV传递到这个新表单的构造函数,并将数据传递给相应的textBoxes。

因此,您可以编辑从DGV分离的所有数据。顺便说一句,在显示新表单时,使用ShowDialog()方法,这将只创建这个新表单可编辑(在关闭它之前,用户将无法执行任何其他操作,只能在此表单上编辑数据)。

答案 2 :(得分:0)

找不到比将所有行都只读并将其变为灰色(正在编辑的那些除外)更好的东西。