DataView
Класс DataView представляет настраиваемое и допускающее привязку данных представление объекта DataTable, для сортировки, фильтрации, поиска, изменения и навигации.
Основная функция DataView – обеспечение привязки данных форм Windows и веб-форм. Кроме того объект DataView можно настроить для предоставления подмножество данных из объекта DataTable, что позволяет использовать несколько элементов управления, отображающих данные из одного объекта DataTable.
Получение данных DataView
Данные в объекте DataView хранятся в виде объектов DataRowView Объект DataRowView представляет собой настраиваемое отображение строки из объекта DataTable
Создание DataView
- С использованием конструктора по умолчанию:
DataView custumersView=new DataView();
custumersView=custumers;
- С использованием конструктора с одним параметром
DataView custumersView=new DataView(custumers);
- С использованием конструктора с четырьмя параметрами
static void Main(string[] args)
{
string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ShopDB;Integrated Security=True";
string commandString = "SELECT * FROM Customers";
DataTable customers = new DataTable();
customers.TableName = "Customers";
SqlDataAdapter adapter = new SqlDataAdapter(commandString, connectionString);
adapter.Fill(customers);
// создание DataView c фильтром и сортировкой
DataView customersView = new DataView(customers, "CustomerNo > 2", "LName, FName", DataViewRowState.Unchanged);
foreach (DataRowView viewRow in customersView)
{
Console.WriteLine("CustomerNo: "+viewRow["CustomerNo"]);
Console.WriteLine("{0} {1} {2}", viewRow["LName"], viewRow["FName"], viewRow["MName"]);
Console.WriteLine(viewRow["City"]);
Console.WriteLine(viewRow["Address1"]);
Console.WriteLine(viewRow["Phone"]);
Console.WriteLine();
}
}
Фильтрация и поиск
Элементы перечисления DataViewRowState задают свойство RowStateFilter объекта DataView, чтобы указать версии данных, которые требуется просмотреть.
Элементы перечисления DataViewRowState:
- None – не показывать каких-либо значение
- Unchanged – показывать неизмененные строки
- Added – показывать добавленные строки
- Deleted – показывать удаленные строки
- ModifiedCurrent – показывать текущие значения строк, которые были изменены
- ModifiedOriginal – показывать оригинальные значения измененных строк
- OriginalRows – показывать оригинальные значения всех строк
- CurrentRows – показывать текущие значения всех строк
Поиск данных с помощью DataView
Для поиска данных объект DataView имеет методы Find и FindRows. Оба эти метода могут производить поиск по отсортированным столбцам объекта DataView.
При этом метод Find предназначен для получения единственной строки, удовлетворяющей критерию поиска, а метод FindRows – массива строк.
// поиск данных в таблице с помощью метода Find объекта DataRowCollection в таблице с составным ключом
static void Main(string[] args)
{
DataSet ds = new DataSet();
string connecionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ShopDB;Integrated Security=True";
string commandString = "SELECT * FROM OrderDetails";
SqlDataAdapter adapter = new SqlDataAdapter(commandString, connecionString);
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
adapter.Fill(ds);
DataTable orderDetails = ds.Tables[0];
DataRow customersRow = orderDetails.Rows.Find(new object[] { 1, 2 });
foreach (DataColumn customersColumn in orderDetails.Columns)
Console.WriteLine(customersColumn.ColumnName + " " + customersRow[customersColumn]);
}