【发布时间】:2012-01-17 05:44:20
【问题描述】:
我有一个名为 Table1 的表格,有 3 列:
1) id - 一个整数和主键
2) 名称 - 一个字符串
3) 标记 - 布尔值
在大多数情况下,Table1 的任何行都将标记为 false。我很想知道 any 行的值何时设置为 true。目前,我只是在使用查询
Table1.Select("标记 = TRUE")
但是,我认为可以使用事件来确定这一点。
下面带有 DataColumnChangeEventHandler 的代码会给我任何列更改的通知。 Notification_ColumnChanged() 方法被调用了 3 次,因为 UpdateTable() 方法中有三行。
我宁愿只在标记列中的任何行被修改时才收到一次通知,因此我不需要调用 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();
}
}
}
【问题讨论】: