ReadOnly Columns DataGridView中的可编辑单元格

时间:2013-02-26 21:58:14

标签: c# winforms datagridview

我有一个DataGridView,它是从数据库中的数据填充的,但不是使用DataSource填充的。我从我的数据库中获取一行,并在init上向我的DataGridView添加一行。

我的问题是,我有一个ReadOnly列,但有时候,此列的数据库中没有数据,在这种情况下,我希望用户能够添加它,但不会覆盖数据,如果信息来自数据库。

如何在列中编辑单个单元格,而不是列?

即。允许这个---

            Col1        Col2 (ReadOnly)                    Col1       Col2 (ReadOlny)
 Row1       A           Can't Change      -->   Row1       J          Can't Change
 Row2       B                                   Row2       B          I added this!
 Row3       C           No Change               Row3       T          No Change

但不是这个---

            Col1        Col2 (ReadOnly)                    Col1       Col2 (ReadOlny)
 Row1       A           Can't Change      -->   Row1       J          OOPS!  
 Row2       B                                   Row2       B          I added this!
 Row3       C           No Change               Row3       T          Not allowed!

1 个答案:

答案 0 :(得分:2)

也许您需要创建只读列的错觉。

您可以简单地将列中的每个单元格修改为只读单元格值不等于null或String.Empty,而不是将列设置为只读。这将允许用户编辑那些空白的单元格并保护您的数据。

只需遍历DataGridViewRow: -

Foreach(DataGridViewRow row in DataGridView1.Rows)
{
   If(!row.Cells[2].Value.Equals(null) || !row.Cells[2].Value.Equals(String.Empty))
     {
        row.Cells[2].ReadOnly = true;
     }
}

请原谅任何语法问题,我已经做到了这一点。