2013-02-26 62 views
1

我有一个DataGridView从数据库中填充数据,但没有使用数据源。我从我的数据库中得到一行,并在init上为我的DataGridView添加一行。ReadOnly列中的可编辑单元格DataGridView

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

如何在列中创建单个单元格可编辑但不是列?

I.E.允许此---

  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! 
+0

[Check this out](http://stackoverflow.com/a/943862/897326)。 – Neolisk 2013-02-26 22:01:02

+0

将单元格的ReadOnly属性设置为false(如果它为空或空),最好在将行插入到网格中时更好。如果列的ReadOnly状态覆盖单元格,也将其更改为false,并让单元格驱动它自己的能力,以编辑整个列而不是整个案例。 – 2013-02-27 00:05:02

回答

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; 
    } 
} 

赦免任何语法问题,我这样做了我的头顶。

+0

EditingControlShowing事件在ReadOnly列上未触发:/ – Tizz 2013-02-26 23:07:23

+0

如果您尚未解决此问题,请尝试更新。 – Derek 2013-02-28 08:50:56

+0

解决方法是保持列readOnly = false并单独对单元格进行修改。一列中的一个单元格有一个下拉列表或其他任何内容:)谢谢! – Tizz 2013-03-05 22:01:19

相关问题