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 вDataRowCollectionDataTable.Rows .DataRowViewDataView

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.

Явные реализации интерфейса

IBindingList.AddIndex(PropertyDescriptor)

Описание этого члена см. в разделе AddIndex(PropertyDescriptor).

IBindingList.AddNew()

Описание этого члена см. в разделе AddNew().

IBindingList.AllowEdit

Описание этого члена см. в разделе AllowEdit.

IBindingList.AllowNew

Описание этого члена см. в разделе AllowNew.

IBindingList.AllowRemove

Описание этого члена см. в разделе AllowRemove.

IBindingList.ApplySort(PropertyDescriptor, ListSortDirection)

Описание этого члена см. в разделе ApplySort(PropertyDescriptor, ListSortDirection).

IBindingList.Find(PropertyDescriptor, Object)

Описание этого члена см. в разделе Find(PropertyDescriptor, Object).

IBindingList.IsSorted

Описание этого члена см. в разделе IsSorted.

IBindingList.RemoveIndex(PropertyDescriptor)

Описание этого члена см. в разделе RemoveIndex(PropertyDescriptor).

IBindingList.RemoveSort()

Описание этого члена см. в разделе RemoveSort().

IBindingList.SortDirection

Описание этого члена см. в разделе SortDirection.

IBindingList.SortProperty

Описание этого члена см. в разделе SortProperty.

IBindingList.SupportsChangeNotification

Описание этого члена см. в разделе SupportsChangeNotification.

IBindingList.SupportsSearching

Описание этого члена см. в разделе SupportsSearching.

IBindingList.SupportsSorting

Описание этого члена см. в разделе SupportsSorting.

IBindingListView.ApplySort(ListSortDescriptionCollection)

Описание этого члена см. в разделе ApplySort(ListSortDescriptionCollection).

IBindingListView.Filter

Описание этого члена см. в разделе Filter.

IBindingListView.RemoveFilter()

Описание этого члена см. в разделе RemoveFilter().

IBindingListView.SortDescriptions

Описание этого члена см. в разделе SortDescriptions.

IBindingListView.SupportsAdvancedSorting

Описание этого члена см. в разделе SupportsAdvancedSorting.

IBindingListView.SupportsFiltering

Описание этого члена см. в разделе SupportsFiltering.

ICollection.IsSynchronized

Описание этого члена см. в разделе IsSynchronized.

ICollection.SyncRoot

Описание этого члена см. в разделе SyncRoot.

IList.Add(Object)

Описание этого члена см. в разделе Add(Object).

IList.Clear()

Описание этого члена см. в разделе Clear().

IList.Contains(Object)

Описание этого члена см. в разделе Contains(Object).

IList.IndexOf(Object)

Описание этого члена см. в разделе IndexOf(Object).

IList.Insert(Int32, Object)

Описание этого члена см. в разделе Insert(Int32, Object).

IList.IsFixedSize

Описание этого члена см. в разделе IsFixedSize.

IList.IsReadOnly

Описание этого члена см. в разделе IsReadOnly.

IList.Item[Int32]

Описание этого члена см. в разделе Item[Int32].

IList.Remove(Object)

Описание этого члена см. в разделе Remove(Object).

IList.RemoveAt(Int32)

Описание этого члена см. в разделе RemoveAt(Int32).

ITypedList.GetItemProperties(PropertyDescriptor[])

Описание этого члена см. в разделе GetItemProperties(PropertyDescriptor[]).

ITypedList.GetListName(PropertyDescriptor[])

Описание этого члена см. в разделе GetListName(PropertyDescriptor[]).

Методы расширения

Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.

OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.

AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.

AsQueryable(IEnumerable)

Преобразовывает коллекцию IEnumerable в объект IQueryable.

Применяется к

Потокобезопасность

Этот тип безопасен для многопоточных операций чтения. Необходимо синхронизировать все операции записи.

См. также раздел