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, так и для веб-формы.
Кроме того, DataView можно настроить для представления подмножества данных из DataTable. Эта возможность позволяет иметь два элемента управления, привязанные к одному и тому же DataTable, но отображающие разные версии данных. Например, один элемент управления может быть привязан к DataView , который отображает все строки в таблице, а второй может быть настроен для отображения только строк, удаленных из DataTable. Также DataTable имеет DefaultView свойство . Возвращает значение по умолчанию DataView для таблицы. Например, если вы хотите создать настраиваемое представление для таблицы, задайте для RowFilter объекта , DataView возвращаемого DefaultView.
Чтобы создать отфильтрованное и отсортированное представление данных, задайте RowFilter свойства и Sort . Затем используйте свойство , Item[] чтобы вернуть один объект DataRowView.
Вы также можете добавлять и удалять из набора строк с помощью AddNew методов и Delete . При использовании этих методов свойство может задать значение , чтобы указать, RowStateFilter что только удаленные или новые строки будут отображаться в DataView.
Примечание
Если явно не указать условия сортировки для , объекты в DataView
сортируются на основе индекса, соответствующего DataRow
DataView вDataRowCollection
DataTable.Rows
.DataRowView
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) |
Инициализирует новый экземпляр класса 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. |
Применяется к
Потокобезопасность
Этот тип безопасен для многопоточных операций чтения. Необходимо синхронизировать все операции записи.
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по