DataView Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет настраиваемое представление DataTable для сортировки, фильтрации, поиска, редактирования и навигации. Он DataView не хранит данные, а представляет подключенное представление соответствующего DataTable. DataViewИзменения данных влияют на DataTableданные. DataTableИзменения данных будут влиять на все DataViewсвязанные с ним данные.
public ref class DataView : System::ComponentModel::MarshalByValueComponent, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ISupportInitialize, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList
public ref class DataView : System::ComponentModel::MarshalByValueComponent, System::Collections::IList, System::ComponentModel::IBindingList, System::ComponentModel::ISupportInitialize, System::ComponentModel::ITypedList
public ref class DataView : System::ComponentModel::MarshalByValueComponent, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList
public ref class DataView : System::ComponentModel::MarshalByValueComponent, System::ComponentModel::IBindingListView, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList
public class DataView : System.ComponentModel.MarshalByValueComponent, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ISupportInitialize, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList
public class DataView : System.ComponentModel.MarshalByValueComponent, System.Collections.IList, System.ComponentModel.IBindingList, System.ComponentModel.ISupportInitialize, System.ComponentModel.ITypedList
public class DataView : System.ComponentModel.MarshalByValueComponent, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList
public class DataView : System.ComponentModel.MarshalByValueComponent, System.ComponentModel.IBindingListView, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList
type DataView = class
inherit MarshalByValueComponent
interface ICollection
interface IEnumerable
interface IList
interface IBindingList
interface IBindingListView
interface ISupportInitialize
interface ISupportInitializeNotification
interface ITypedList
type DataView = class
inherit MarshalByValueComponent
interface IBindingList
interface IList
interface ICollection
interface IEnumerable
interface ITypedList
interface ISupportInitialize
type DataView = class
inherit MarshalByValueComponent
interface IBindingListView
interface IBindingList
interface IList
interface ICollection
interface IEnumerable
interface ITypedList
interface ISupportInitializeNotification
interface ISupportInitialize
Public Class DataView
Inherits MarshalByValueComponent
Implements IBindingListView, IList, ISupportInitialize, ISupportInitializeNotification, ITypedList
Public Class DataView
Inherits MarshalByValueComponent
Implements IBindingList, IList, ISupportInitialize, ITypedList
Public Class DataView
Inherits MarshalByValueComponent
Implements IBindingListView, IList, ISupportInitializeNotification, ITypedList
Public Class DataView
Inherits MarshalByValueComponent
Implements IBindingListView, ISupportInitializeNotification, ITypedList
- Наследование
- Реализации
Примеры
В следующем примере создается один столбец DataTable и пять строк. Создаются два DataView объекта и RowStateFilter задаются для каждого из них для отображения различных представлений данных таблицы. Затем будут напечатаны значения.
using System;
using System.Xml;
using System.Data;
using System.Data.Common;
using System.Windows.Forms;
public class Form1: Form
{
protected DataSet DataSet1;
protected DataGrid dataGrid1;
private void DemonstrateDataView()
{
// Create one DataTable with one column.
DataTable table = new DataTable("table");
DataColumn colItem = new DataColumn("item",
Type.GetType("System.String"));
table.Columns.Add(colItem);
// Add five items.
DataRow NewRow;
for(int i = 0; i <5; i++)
{
NewRow = table.NewRow();
NewRow["item"] = "Item " + i;
table.Rows.Add(NewRow);
}
// Change the values in the table.
table.AcceptChanges();
table.Rows[0]["item"]="cat";
table.Rows[1]["item"] = "dog";
// Create two DataView objects with the same table.
DataView firstView = new DataView(table);
DataView secondView = new DataView(table);
// Print current table values.
PrintTableOrView(table,"Current Values in Table");
// Set first DataView to show only modified
// versions of original rows.
firstView.RowStateFilter=DataViewRowState.ModifiedOriginal;
// Print values.
PrintTableOrView(firstView,"First DataView: ModifiedOriginal");
// Add one New row to the second view.
DataRowView rowView;
rowView=secondView.AddNew();
rowView["item"] = "fish";
// Set second DataView to show modified versions of
// current rows, or New rows.
secondView.RowStateFilter=DataViewRowState.ModifiedCurrent
| DataViewRowState.Added;
// Print modified and Added rows.
PrintTableOrView(secondView,
"Second DataView: ModifiedCurrent | Added");
}
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.Rows[i]["item"]);
}
Console.WriteLine();
}
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(view[i]["item"]);
}
Console.WriteLine();
}
}
Private Sub DemonstrateDataView()
' Create one DataTable with one column.
Dim table As New DataTable("table")
Dim colItem As New DataColumn("item", _
Type.GetType("System.String"))
table.Columns.Add(colItem)
' Add five items.
Dim NewRow As DataRow
Dim i As Integer
For i = 0 To 4
NewRow = table.NewRow()
NewRow("item") = "Item " & i
table.Rows.Add(NewRow)
Next
table.AcceptChanges()
' Create two DataView objects with the same table.
Dim firstView As New DataView(table)
Dim secondView As New DataView(table)
' Change the values in the table.
table.Rows(0)("item") = "cat"
table.Rows(1)("item") = "dog"
' Print current table values.
PrintTableOrView(table, "Current Values in Table")
' Set first DataView to show only modified versions of original rows.
firstView.RowStateFilter = DataViewRowState.ModifiedOriginal
' Print values.
PrintTableOrView(firstView, "First DataView: ModifiedOriginal")
' Add one New row to the second view.
Dim rowView As DataRowView
rowView = secondView.AddNew()
rowView("item") = "fish"
' Set second DataView to show modified versions of
' current rows, or New rows.
secondView.RowStateFilter = DataViewRowState.ModifiedCurrent _
Or DataViewRowState.Added
' Print modified and Added rows.
PrintTableOrView(secondView, _
"Second DataView: ModifiedCurrent or Added")
End Sub
Overloads Private Sub PrintTableOrView( _
ByVal view As DataView, ByVal label As String)
Console.WriteLine(label)
Dim i As Integer
For i = 0 To view.count - 1
Console.WriteLine(view(i)("item"))
Next
Console.WriteLine()
End Sub
Overloads Private Sub PrintTableOrView( _
ByVal table As DataTable, ByVal label As String)
Console.WriteLine(label)
Dim i As Integer
For i = 0 To table.Rows.Count - 1
Console.WriteLine(table.Rows(i)("item"))
Next
Console.WriteLine()
End Sub
В следующем примере создается DataView онлайн-заказы, упорядоченные по общему объему из запроса LINQ to DataSet:
DataTable orders = dataSet.Tables["SalesOrderHeader"];
EnumerableRowCollection<DataRow> query =
from order in orders.AsEnumerable()
where order.Field<bool>("OnlineOrderFlag") == true
orderby order.Field<decimal>("TotalDue")
select order;
DataView view = query.AsDataView();
bindingSource1.DataSource = view;
Dim orders As DataTable = dataSet.Tables("SalesOrderHeader")
Dim query = _
From order In orders.AsEnumerable() _
Where order.Field(Of Boolean)("OnlineOrderFlag") = True _
Order By order.Field(Of Decimal)("TotalDue") _
Select order
Dim view As DataView = query.AsDataView()
bindingSource1.DataSource = view
Комментарии
Основная функция DataView заключается в том, чтобы разрешить привязку данных как в Windows Forms, так и в Web Forms.
Кроме того, DataView можно настроить для представления подмножества данных из .DataTable Эта возможность позволяет иметь два элемента управления, привязанные к одному и тому же DataTable, но отображают разные версии данных. Например, один элемент управления может быть привязан к объекту DataView , в котором отображаются все строки таблицы, а вторая может быть настроена для отображения только строк, которые были удалены из таблицы DataTable. У DataTable него также есть DefaultView свойство. Возвращает значение по умолчанию DataView для таблицы. Например, если вы хотите создать пользовательское представление в таблице, задайте RowFilterDataView для возвращаемого значения DefaultView.
Чтобы создать отфильтрованное и отсортированного представление данных, задайте RowFilter параметры и Sort свойства. Затем используйте Item[] свойство для возврата одного DataRowView.
Вы также можете добавлять и удалять из набора строк с помощью AddNew методов и Delete методов. При использовании этих методов RowStateFilter свойство может задать, чтобы указать, что отображаются DataViewтолько удаленные строки или новые строки.
Заметка
Если вы явно не указываете критерии сортировки, DataRowView объекты отсортированы DataView в зависимости от индекса данных, соответствующего DataRow в dataViewDataTable.RowsDataRowCollection.DataView
LINQ to DataSet позволяет разработчикам создавать сложные и мощные запросы через DataSet LINQ. Запрос LINQ to DataSet возвращает перечисление DataRow объектов, которые не легко используются в сценарии привязки. DataView можно создать из запроса LINQ to DataSet и принять характеристики фильтрации и сортировки этого запроса. LINQ to DataSet расширяет функциональные возможности DataView , предоставляя фильтрацию и сортировку на основе выражений LINQ, что позволяет выполнять гораздо более сложные и мощные операции фильтрации и сортировки, чем фильтрация на основе строк. Дополнительные сведения см. в разделе "Привязка данных" и LINQ to DataSet .
Конструкторы
| Имя | Описание |
|---|---|
| DataView() |
Инициализирует новый экземпляр класса DataView. |
| DataView(DataTable, String, String, DataViewRowState) |
Инициализирует новый экземпляр DataView класса с указанным DataTable, RowFilterи SortDataViewRowState. |
| DataView(DataTable) |
Инициализирует новый экземпляр DataView класса с указанным DataTable. |
Свойства
| Имя | Описание |
|---|---|
| AllowDelete |
Возвращает или задает значение, указывающее, разрешены ли удаления. |
| AllowEdit |
Возвращает или задает значение, указывающее, разрешены ли изменения. |
| AllowNew |
Возвращает или задает значение, указывающее, можно ли добавлять новые строки с помощью AddNew() метода. |
| ApplyDefaultSort |
Возвращает или задает значение, указывающее, следует ли использовать сортировку по умолчанию. Сортировка по умолчанию — это (возрастание) по всем первичным ключам, указанным в параметре PrimaryKey. |
| Container |
Возвращает контейнер для компонента. (Унаследовано от MarshalByValueComponent) |
| Count |
Возвращает количество записей после DataViewRowFilter и RowStateFilter применено. |
| DataViewManager |
Возвращает связанное с этим представлением DataViewManager . |
| DesignMode |
Возвращает значение, указывающее, находится ли компонент в режиме конструктора. (Унаследовано от MarshalByValueComponent) |
| Events |
Возвращает список обработчиков событий, подключенных к этому компоненту. (Унаследовано от MarshalByValueComponent) |
| IsInitialized |
Возвращает значение, указывающее, инициализирован ли компонент. |
| IsOpen |
Возвращает значение, указывающее, открыт ли источник данных и проецирует представления данных на данный DataTableмомент. |
| Item[Int32] |
Возвращает строку данных из указанной таблицы. |
| RowFilter |
Возвращает или задает выражение, используемое для фильтрации строк, которые отображаются в объекте DataView. |
| RowStateFilter |
Возвращает или задает фильтр состояния строки, используемый в объекте DataView. |
| Site |
Возвращает или задает сайт компонента. (Унаследовано от MarshalByValueComponent) |
| Sort |
Возвращает или задает столбец сортировки или столбцы, а также порядок сортировки для столбцов DataView. |
| Table |
Возвращает или задает источник DataTable. |
Методы
| Имя | Описание |
|---|---|
| AddNew() |
Добавляет новую строку в объект DataView. |
| BeginInit() |
Запускает инициализацию, DataView которая используется в форме или используется другим компонентом. Инициализация происходит во время выполнения. |
| Close() |
DataViewЗакрывает объект . |
| ColumnCollectionChanged(Object, CollectionChangeEventArgs) |
Происходит после успешного DataColumnCollection изменения. |
| CopyTo(Array, Int32) |
Копирует элементы в массив. Только для интерфейсов веб-форм. |
| Delete(Int32) |
Удаляет строку по указанному индексу. |
| Dispose() |
Освобождает все ресурсы, используемые параметром MarshalByValueComponent. (Унаследовано от MarshalByValueComponent) |
| Dispose(Boolean) |
Удаляет ресурсы (кроме памяти), используемые DataView объектом. |
| EndInit() |
Заканчивает инициализацию, DataView которая используется в форме или используется другим компонентом. Инициализация происходит во время выполнения. |
| Equals(DataView) |
Определяет, считаются ли указанные DataView экземпляры равными. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| Find(Object) |
Находит строку в DataView указанном значении ключа сортировки. |
| Find(Object[]) |
Находит строку в DataView заданных значениях ключа сортировки. |
| FindRows(Object) |
Возвращает массив объектов, столбцы которых соответствуют указанному значению ключа сортировки DataRowView . |
| FindRows(Object[]) |
Возвращает массив объектов, столбцы которых соответствуют указанному значению ключа сортировки DataRowView . |
| GetEnumerator() |
Возвращает перечислитель для этого DataView. |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetService(Type) |
Возвращает реализующего объект IServiceProvider. (Унаследовано от MarshalByValueComponent) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| IndexListChanged(Object, ListChangedEventArgs) |
Происходит после успешного DataView изменения. |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| OnListChanged(ListChangedEventArgs) |
Вызывает событие ListChanged. |
| Open() |
DataViewОткрывает объект . |
| Reset() |
Зарезервировано только для внутреннего использования. |
| ToString() |
String Возвращает имя, содержащее имя , если таковое Componentимеется. Этот метод не должен быть переопределен. (Унаследовано от MarshalByValueComponent) |
| ToTable() |
Создает и возвращает новое DataTable на основе строк в существующем DataView. |
| ToTable(Boolean, String[]) |
Создает и возвращает новое DataTable на основе строк в существующем DataView. |
| ToTable(String, Boolean, String[]) |
Создает и возвращает новое DataTable на основе строк в существующем DataView. |
| ToTable(String) |
Создает и возвращает новое DataTable на основе строк в существующем DataView. |
| UpdateIndex() |
Зарезервировано только для внутреннего использования. |
| UpdateIndex(Boolean) |
Зарезервировано только для внутреннего использования. |
События
| Имя | Описание |
|---|---|
| Disposed |
Добавляет обработчик событий для прослушивания Disposed события компонента. (Унаследовано от MarshalByValueComponent) |
| Initialized |
Происходит при завершении инициализации объекта DataView . |
| ListChanged |
Происходит при изменении списка, управляемого DataView изменениями. |
Явные реализации интерфейса
Методы расширения
| Имя | Описание |
|---|---|
| AsParallel(IEnumerable) |
Включает параллелизацию запроса. |
| AsQueryable(IEnumerable) |
Преобразует IEnumerable в IQueryable. |
| Cast<TResult>(IEnumerable) |
Приведение элементов IEnumerable к указанному типу. |
| OfType<TResult>(IEnumerable) |
Фильтрует элементы IEnumerable на основе указанного типа. |
Применяется к
Потокобезопасность
Этот тип является безопасным для многопоточных операций чтения. Необходимо синхронизировать все операции записи.