2011-10-19 61 views
2

我已經將2個數據列的readonly屬性設置爲true。在DataGridView中,添加新行時將列的ReadOnly屬性設置爲false,更新其真實(c#.net)

List.Columns[0].ReadOnly = true; 
    List.Columns[1].ReadOnly = true; 

但我只希望他們只有當用戶試圖更新,用戶可以添加新行的dataGridView被讀取,所以我想嘗試添加新行時的只讀屬性變成假的。我試圖在DataGrid的CellDoubleClick事件上做這件事,但它不會做任何事情,因爲它遲到了開始被調用。

if(e.RowIndex == GridView.Rows.Count-1) 
       GridView.Rows[e.RowIndex].Cells[1].ReadOnly = GridView.Rows[e.RowIndex].Cells[0].ReadOnly = false; 
      else 
       GridView.Rows[e.RowIndex].Cells[1].ReadOnly = GridView.Rows[e.RowIndex].Cells[0].ReadOnly = true; 

任何想法

回答

5

您必須使用cellbegin編輯,使細胞只讀屬性爲true。 。

private void dataGridView1_CellBeginEdit(object sender,DataGridViewCellCancelEventArgs e) 
    { 
     if (dataGridView1.Columns[e.ColumnIndex].Name == "ColName0") 
     { 
      // you can check whether the read only property of that cell is false or not 

     } 
    } 

我希望它會幫助你...

2

這聽起來像你想要做的是使網格中的所有行只讀,除非它們是新行什麼,因此這意味着創建的行不能編輯。如果這是正確的,那麼你可以做的是設置行,像這樣DataBindingComplete活動期間爲只讀:

dataGridView1.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete); 

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    foreach (DataGridViewRow item in dataGridView1.Rows) 
    { 
     if (!item.IsNewRow) 
      item.ReadOnly = true; 
    } 
} 

的重要組成部分,是檢查是否該行的新行。

相關問題