- •Содержание
- •Введение
- •Класс DataView
- •Базовая информация
- •Конструкторы класса DataView
- •Свойства класса DataView
- •Методы класса DataView
- •События класса DataView
- •Пример использования DataView
- •Первый пример
- •Простой пример взаимодействия автономного DataTable и DataView
- •Более сложный пример с возможностью добавления записей и поиска
- •Заключение
- •Список литературы
- •Программный код примера №1
- •Программный код примера №2
- •Программный код примера №3
-
События класса DataView
Disposed -Добавляет обработчик событий, чтобы прослушивать событие Disposed для компонента. (Унаследовано от MarshalByValueComponent.)
Initialized -Происходит при завершении инициализации DataView.
ListChanged -Происходит при изменении списка, управляемого объектом DataView.
-
Пример использования DataView
-
Первый пример
-
Полный программный код данного примера находиться в Приложении 1.
Для первого знакомство с классом DataView рассмотрим пример размещенный на msdn.microsoft.com.
Данный пример довольно прост и состоит из трех функций.
1. Функция вывода на консоль содержимого DataTable.
private void PrintTableOrView(DataTable table, string label)
{
// This function prints values in the table or DataView.
Console.WriteLine("\n" + label);
for(int i = 0; i<table.Rows.Count;i++)
{
Console.WriteLine("\table" + table.Rows[i]["item"]);
}
Console.WriteLine();
}
2. Функция вывода на консоль содержимого DataView
private void PrintTableOrView(DataView view, string label)
{
// This overload prints values in the table or DataView.
Console.WriteLine("\n" + label);
for(int i = 0; i<view.Count;i++)
{
Console.WriteLine("\table" + view[i]["item"]);
}
Console.WriteLine();
}
3. Функция DemonstrateDataView(), в которой содержится создание и заполнение DataTable начальными данными, создание объектов DataView, добавление данных через DataView. Рассмотрим данную функцию более подробно.
Создадим таблицу «table» состоящую из одного столбца типа String.
DataTable table = new DataTable("table");
DataColumn colItem = new DataColumn("item",
Type.GetType("System.String"));
table.Columns.Add(colItem);
Заполним ее 5 записями.
for (int i = 0; i < 5; i++)
{
NewRow = table.NewRow();
NewRow["item"] = "Item " + i;
table.Rows.Add(NewRow);
}
Изменим 2 произвольные записи, и подтвердим изменения.
table.Rows[0]["item"] = "cat";
table.Rows[1]["item"] = "dog";
table.AcceptChanges();
Создадим 2 объекта DataView для таблицы table.
DataView firstView = new DataView(table);
DataView secondView = new DataView(table);
Установим firstView для отображения предыдущих значений измененных записей, а secondView для отображения новых записей и значений редактированных записей.
firstView.RowStateFilter = DataViewRowState.ModifiedOriginal;
secondView.RowStateFilter = DataViewRowState.ModifiedCurrent
| DataViewRowState.Added;
Проверим работу DataView. Для этого изменим значение одной из записей, но не будем подтверждать изменения, и добавим новую запись в таблицу. И выведем результаты на экран.
PrintTableOrView(table, "Current Values in Table");
firstView.RowStateFilter = DataViewRowState.ModifiedOriginal;
table.Rows[2]["item"] = "hourse";
PrintTableOrView(firstView, "First DataView: ModifiedOriginal");
DataRow rowAdd;
rowAdd = table.NewRow();
rowAdd["item"] = "fish";
table.Rows.Add(rowAdd);
secondView.RowStateFilter = DataViewRowState.ModifiedCurrent
| DataViewRowState.Added;
PrintTableOrView(secondView,
"Second DataView: ModifiedCurrent | Added");
Запустим пример, и посмотрим что будет выведено на экран.
Рис. 1. Скриншот работы примера №1
На данном примере видно удобство использование DataView для частичного вывода записей таблицы.