DataView
Класс DataView представляет настраиваемое и допускающее привязку данных представление объекта DataTable, для сортировки, фильтрации, поиска, изменения и навигации.
Основная функция DataView – обеспечение привязки данных форм Windows и веб-форм. Кроме того объект DataView можно настроить для предоставления подмножество данных из объекта DataTable, что позволяет использовать несколько элементов управления, отображающих данные из одного объекта DataTable.
Получение данных DataView
Данные в объекте DataView хранятся в виде объектов DataRowView Объект DataRowView представляет собой настраиваемое отображение строки из объекта DataTable
Создание DataView
- С использованием конструктора по умолчанию:
1 2 |
DataView custumersView=new DataView(); custumersView=custumers; |
- С использованием конструктора с одним параметром
1 |
DataView custumersView=new DataView(custumers); |
- С использованием конструктора с четырьмя параметрами
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
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 – массива строк.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// поиск данных в таблице с помощью метода 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]); } |