2013-02-26 106 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

相關問題