2012-08-22 100 views
0

我需要知道XtraGrid是否已被修改(更改了值或添加了行)。XtraGrid已被修改

我可以做一個boolean var,改變它GridView_CellValueChanged

void suppGridView_CellValueChanged(object sender, CellValueChangedEventArgs e) { 
    isModified = true; 
} 


我可以讀取所有的數據源,並檢查DataRow.RowState屬性值(ModifiedAdded):

foreach (DataRow row in dataSource.Rows) { 
    if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added) 
     return true; 
} 

待辦事項你知道一個更簡單的方法?

回答

4

可以知道數據表是否通過以下方式改變:

DataTable changes = table.GetChanges(DataRowState.Added | DataRowState.Modified); 
bool isModified = (changes != null); 

這裏table是一個DataTable。
msdn

DataTable.GetChanges方法:
獲取包含向它提出的,因爲它是最後加載,或因爲AcceptChanges的是所謂的,通過過濾的DataRowState所有更改DataTable的一個副本。

備註: 如果沒有發現所希望的DataRowState的行,該方法返回

+1

謝謝,完美的作品 – Zyku

+2

@Zyku:我已經更新了答案,以避免可能的NullReferenceException。 – DmitryG

+0

@DmitryG,是的,我做了這個在我的項目中,得到錯誤後,謝謝,謝謝 – Zyku