У меня есть таблица, которая называется Table1, с 3 столбцами:
1) id - целое число и первичный ключ
2) Имя - Строка
3) Помечено - логическое
В большинстве случаев любые строки таблицы Table1 будут иметь флажок со значением false. Мне интересно знать, когда для любой строки установлено значение true. Сейчас я просто использую запрос
Table1.Select ("Flagged = TRUE")
Однако я подумал, что это можно определить, используя события.
Код ниже с DataColumnChangeEventHandler даст мне уведомление о любых изменениях столбца. Метод Notification_ColumnChanged () вызывается три раза, поскольку в методе UpdateTable () есть три строки.
Я бы предпочел получать уведомление только один раз и только в том случае, если какие-либо строки в столбце «Помеченные» изменены, и поэтому мне не нужно вызывать метод Select (). Мне было интересно, если это возможно? Возможно, DataViews и события, основанные на них, были бы лучшим способом для достижения этой цели? Я заинтересован в любых предложениях.
Спасибо.
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();
}
}
}