2012-01-17 14 views
0

I持って3列と、表1と呼ばれる表:.NETのDataTable、イベントおよび決定は、特定の列の値が変更された場合

1)ID - 整数主キー

2)名前 - フラグ付き文字列

3) - 表1の任意の行がfalseに設定フラグを立てていますほとんどの場合には、ブール

行の値がtrueに設定されていることを知りたいと思っています。今のところ、私は単に、クエリ

Table1.Select(「TRUEフラグ付き=」)

を使用してきたしかし、私はこの使用してイベントを決定することが可能であると思いました。

DataColumnChangeEventHandlerを使用している以下のコードは、すべての列の変更について通知します。メソッドNotificationTable()に3行があるので、Notification_ColumnChanged()メソッドは3回呼び出されます。

フラグを設定した列の行が変更されただけで、Select()メソッドを呼び出す必要はありません。これが可能かどうか疑問に思っていましたか?おそらく、これを実現するためのよりよい方法は、データビューやイベントをベースにしていますか?私はどんな提案にも興味があります。

ありがとうございました。

using System; 
using System.Data; 

namespace ConsoleApplication1 
{ 
    public class Program 
    { 
     private TestDataSet _testDataSet; 

     public Program() 
     { 
      _testDataSet = new TestDataSet(); 
      _testDataSet.Table1.AddTable1Row(1, "name1", false); 
      _testDataSet.Table1.AddTable1Row(2, "name2", false); 
      _testDataSet.Table1.AcceptChanges(); 
      _testDataSet.Table1.ColumnChanged += new DataColumnChangeEventHandler(Notification_ColumnChanged); 
     } 

     private void Notification_ColumnChanged(object sender, DataColumnChangeEventArgs e) 
     { 
      Console.WriteLine("Notification_ColumnChanged"); 
     } 

     public void UpdateTable() 
     { 
      Console.WriteLine("Updating"); 
      _testDataSet.Table1[0].Flagged = true; 
      _testDataSet.Table1[1].Flagged = true; 
      _testDataSet.Table1[1].Name = "name2"; 
     } 

     public static void Main(string[] args) 
     { 
      Program p = new Program(); 
      p.UpdateTable(); 
     } 
    } 
} 

答えて

1

ColumnChangedイベント(およびRowChangedイベント)が行全体で機能するため、これは不可能です。どの列がNotification_ColumnChangedに変更されたかのテストを解決できますが、どの列に対しても発生します。

+0

これは私が思ったものですが、確認したかったのです。ありがとう。 – sdbol

関連する問題