2013-03-11 153 views
0

我有搜索網絡的答案,但沒有找到它。這是C#winforms。 是可以做這樣的事情:datagridview行單元格值

private void datagridItems_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
int ID; 
DataGridViewRow row = this.datagridItems.Rows[e.RowIndex]; 
DataGridViewCell cell = row.Cells[e.ColumnIndex]; 

if (row.Cells[2].Value == some value) 
{ 
//set the value of a cell 
row.Cells[4].Value = new value; 
} 
} 

我需要清除細胞的現有內容[4]基於細胞[2]一些其他標準。

感謝您的任何幫助。 Ryan

+0

在哪個方法?什麼是'e'? – bas 2013-03-11 20:59:04

+0

'e'表示您處於某個事件處理程序中。究竟哪一個?如果您在頁面/控件生命週期中太遲,則所有更改都將被忽略。應該在某些數據綁定事件上,可能是'DataGrid_RowDataBound' – J0HN 2013-03-11 20:59:09

+0

是的,這是可能的。你有沒有嘗試過上面的代碼?你有什麼問題? – Melanie 2013-03-11 20:59:16

回答

2

如果DataGridView是數據綁定的,則不應該直接修改單元格的內容。相反,你應該修改數據綁定對象。你可以通過一個DataGridViewRow的DataBoundItem訪問該對象:

MyObject obj = (MyObject)dataGridView.CurrentRow.DataBoundItem; 
obj.MyProperty = newValue; 

刷新電網後,如果您綁定的對象不支持INotifyPropertyChanged的事件。

+0

有道理。爲什麼我不想直接修改單元格?我想進一步瞭解。 Thx – Ryan 2013-03-12 01:18:47

+0

根據您綁定的對象,對單元的更改可能不會更改您的基礎對象。因此,稍後在另一個函數中使用有界對象時。您在網格上看到的內容以及您在代碼中看到的內容可能會有所不同。 – 2013-03-14 10:01:57

+0

嗨瑞安..你提到的是正確的...我掙扎很多,使我的Windows應用程序的更新聲明工作...問題是我綁定網格數據源在另一個功能pagge明智的顯示數據源。 ...當我試圖更新網格時,它並沒有在後端SQL數據庫中得到更新....是否有解決方案? – 2016-04-19 05:02:11