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 по умолчанию для таблицы. Например, если вы хотите создать пользовательское представление в таблице, задайте RowFilter на DataView, возвращаемой DefaultView.
Чтобы создать отфильтрованное и отсортированный представление данных, задайте свойства RowFilter и Sort. Затем используйте свойство Item[] для возврата одного DataRowView.
Вы также можете добавить и удалить из набора строк с помощью методов AddNew и Delete. При использовании этих методов свойство RowStateFilter может задать, чтобы указать, что DataViewбудут отображаться только удаленные строки или новые строки.
Заметка
Если явно не указывать критерии сортировки для DataView
, то объекты DataRowView
в DataView
сортируются на основе индекса соответствующих DataRow
DataView в DataTable.Rows
DataRowCollection
.
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) |
Инициализирует новый экземпляр класса DataView с указанным DataTable. |
DataView(DataTable, String, String, DataViewRowState) |
Инициализирует новый экземпляр класса DataView с указанным DataTable, RowFilter, Sortи DataViewRowState. |
Свойства
AllowDelete |
Возвращает или задает значение, указывающее, разрешены ли удаления. |
AllowEdit |
Возвращает или задает значение, указывающее, разрешены ли изменения. |
AllowNew |
Возвращает или задает значение, указывающее, можно ли добавлять новые строки с помощью метода AddNew(). |
ApplyDefaultSort |
Возвращает или задает значение, указывающее, следует ли использовать сортировку по умолчанию. Сортировка по умолчанию (возрастает) по всем первичным ключам, как указано в PrimaryKey. |
Container |
Возвращает контейнер для компонента. (Унаследовано от MarshalByValueComponent) |
Count |
Возвращает количество записей в DataView после применения RowFilter и 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) |
Создает и возвращает новую DataTable на основе строк в существующей DataView. |
ToTable(String, Boolean, String[]) |
Создает и возвращает новую DataTable на основе строк в существующей DataView. |
UpdateIndex() |
Зарезервировано только для внутреннего использования. |
UpdateIndex(Boolean) |
Зарезервировано только для внутреннего использования. |
События
Disposed |
Добавляет обработчик событий для прослушивания события Disposed компонента. (Унаследовано от MarshalByValueComponent) |
Initialized |
Происходит при завершении инициализации DataView. |
ListChanged |
Происходит при изменении списка, управляемого DataView. |
Явные реализации интерфейса
Методы расширения
GetKeyedService<T>(IServiceProvider, Object) |
Возвращает службу типа |
GetKeyedServices(IServiceProvider, Type, Object) |
Возвращает перечисление служб типа |
GetKeyedServices<T>(IServiceProvider, Object) |
Возвращает перечисление служб типа |
GetRequiredKeyedService(IServiceProvider, Type, Object) |
Возвращает службу типа |
GetRequiredKeyedService<T>(IServiceProvider, Object) |
Возвращает службу типа |
CreateAsyncScope(IServiceProvider) |
Создает новый AsyncServiceScope, который можно использовать для разрешения служб с областью действия. |
CreateScope(IServiceProvider) |
Создает новый IServiceScope, который можно использовать для разрешения служб с областью действия. |
GetRequiredService(IServiceProvider, Type) |
Получение службы типа |
GetRequiredService<T>(IServiceProvider) |
Получение службы типа |
GetService<T>(IServiceProvider) |
Получение службы типа |
GetServices(IServiceProvider, Type) |
Получение перечисления служб типа |
GetServices<T>(IServiceProvider) |
Получение перечисления служб типа |
GetFakeLogCollector(IServiceProvider) |
Возвращает объект, который собирает записи журнала, отправленные в поддельный средство ведения журнала. |
GetFakeRedactionCollector(IServiceProvider) |
Возвращает экземпляр сборщика поддельных редакторов из контейнера внедрения зависимостей. |
Cast<TResult>(IEnumerable) |
Приведение элементов IEnumerable к указанному типу. |
OfType<TResult>(IEnumerable) |
Фильтрует элементы IEnumerable на основе указанного типа. |
AsParallel(IEnumerable) |
Включает параллелизацию запроса. |
AsQueryable(IEnumerable) |
Преобразует IEnumerable в IQueryable. |
Применяется к
Потокобезопасность
Этот тип является безопасным для многопоточных операций чтения. Необходимо синхронизировать все операции записи.