2012-03-06 101 views
0

我想知道是否有任何條件來檢查單元格的值是否被編輯。 我可以用其他方式做到這一點(使用If value == value)bla bla..but但我需要寫很多東西來比較這些值..我需要另一種方法。檢查gridview單元格的值是否被編輯的條件?

感謝

+0

您使用的是自定義對象還是數據表? – 2012-03-06 11:47:55

+0

我正在使用gridview – 2012-03-06 11:48:44

+0

您需要在客戶端執行此操作還是在回發時檢查數據庫? – Kaf 2012-03-06 11:52:32

回答

0

如果您正在使用一個對象的數據源的自定義對象/列表綁定工作。您可以定義一個基類,繼承它&標記你的對象髒象

public class ObjectBase 
{ 
    private bool _isDirty; 
    private bool _isNew = true; 
    protected void MarkDirty() 
    { 
     _isDirty = true; 
    } 
    protected void MarkAsNew() 
    { 
     _isNew = true; 
    } 
    public bool IsDirty 
    { 
     get { return _isDirty; } 
    } 
    } 

那麼你的對象類裏面,你會繼承這個基類像

public class myClass:ObjectBase 
{ 
    public int Id {get; set;} 
    public string Name {get; set;} 
} 

Whenver你更新你的對象,將它們標記爲骯髒的表示層,那麼你檢查他們是在業務層一樣,如果是更新否則返回「不改變更新」

public static bool UpdateItem(Employee myEmployee) 
    { 
     if(myEmployee.IsDirty) 
     { 
      return myEmployeeDB.UpdateItem(myEmployee); 
     } 
    } 
+0

heh這麼多的代碼,我只是要求一個簡單的說明來檢查是否編輯過單元格 – 2012-03-06 12:02:02

0

DataGridVie髒wCell不會跟蹤更改。如果您需要知道只有一個單元格的值已更改,請使用CellValueChanged事件並在那裏執行您的操作。如果您需要知道哪些細胞已被修改,所以你可以列舉出來,做是必要的,試試這個:

HashSet<DataGridViewCell> changedCells = new HashSet<DataGridViewCell>(); 
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
    DataGridView dgv = sender as DataGridView; 
    if (!changedCells.Contains(dgv[e.ColumnIndex, e.RowIndex])) 
    { 
     changedCells.Add(dgv[e.ColumnIndex, e.RowIndex]); 
    } 
} 

不要忘了勾的DataGridView的CellValueChanged事件。當您需要更改單元列表時,請執行以下操作:

foreach (DataGridViewCell cell in changedCells) 
{ 
     // Your work here 
} 

這僅適用於UI級別。如果你的數據被代碼改變了,你將需要不同的方法。

+0

hmm,cellvalue的改變無法找到庫中用到了什麼? – 2012-03-06 12:36:33

+0

我的不好,我假設(但錯誤地)平臺之間的相同功能。這只是WinForms,對不起。 – 2012-03-06 12:58:27

+0

uff,在asp.net中這樣做的任何方式? – 2012-03-06 13:02:44

相關問題