Поделиться через


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 изменениями.

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

Имя Описание
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[]).

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

Имя Описание
AsParallel(IEnumerable)

Включает параллелизацию запроса.

AsQueryable(IEnumerable)

Преобразует IEnumerable в IQueryable.

Cast<TResult>(IEnumerable)

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

OfType<TResult>(IEnumerable)

Фильтрует элементы IEnumerable на основе указанного типа.

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

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

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

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