2012-03-06 30 views
0

セルの値が編集されたかどうかを確認する条件があるかどうかを知りたいと思います。 私は他の方法で(if値==値で)bla blaを行うことができます。しかし、値を比較するためにはたくさん書く必要があります。別の方法が必要です。gridviewセルの値が編集されたかどうかを確認する条件?

おかげ

+0

カスタムオブジェクトまたはデータテーブルを使用していますか? –

+0

私はgridviewを使用しています –

+0

クライアントサイドでこれを行うか、ポストバックでdbに対してチェックする必要がありますか? – Kaf

答えて

0

は、オブジェクトデータソースを使用してカスタムオブジェクト/リスト・バインドを使用している場合。あなたは、あなたがあなたのオブジェクトを更新Whenverそれはその後、あなたのオブジェクトクラスの内部で使用すると、

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

のように、この基本クラスを継承する

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; } 
    } 
    } 

のような汚れたあなたのオブジェクトをマーク&継承し、基本クラスを定義し、それらをマークすることができますプレゼンテーション層で汚れ、あなたは彼らのような、yesと更新他のリターンは

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

heh so much code、私はセルが編集されたかどうかを確認する簡単な文章を要求していた –

0

DataGridVieを「変更が更新されないための」ビジネスレイヤのダーティであることを確認してくださいwCellは変更を追跡しません。値が1つのセルだけ変更されたことを知る必要がある場合は、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、変更されたセルの値がライブラリの使用方法を見つけることができません? –

+0

私は悪いですが、私は(間違って)同じプラットフォーム間で同じ機能を再び仮定しました。これはWinFormsのみです。ごめんなさい。 –

+0

uff、asp.netでこれを行う方法は? –

関連する問題