Sdílet prostřednictvím


DataView Třída

Definice

Představuje datovou vazbu, přizpůsobené zobrazení DataTable pro řazení, filtrování, vyhledávání, úpravy a navigaci. Neukládá DataView data, ale místo toho představuje propojené zobrazení odpovídajícího DataTableobjektu . DataViewZměny dat budou mít vliv na DataTable. DataTableZměny dat budou mít vliv na všechna DataViewpřidružená data.

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
Dědičnost
Implementuje

Příklady

Následující příklad vytvoří jeden s jedním DataTable sloupcem a pěti řádky. Vytvoří se dva DataView objekty a RowStateFilter nastaví se na každém z nich, aby zobrazovaly různá zobrazení dat tabulky. Hodnoty se pak vytisknou.

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

Následující příklad vytvoří DataView online objednávky seřazené celkem z dotazu 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

Poznámky

Hlavní funkcí této DataView funkce je umožnit datové vazby ve Windows Forms i webových formulářích.

Kromě toho lze přizpůsobit tak, aby se v sadě dat z objektu .</a0> prezentovala podmnožina dat . Tato funkce umožňuje mít dva ovládací prvky vázané na stejné DataTable, ale zobrazují různé verze dat. Jeden ovládací prvek může být například vázán na DataView řádek, který zobrazuje všechny řádky v tabulce, a druhý může být nakonfigurován tak, aby zobrazoval pouze řádky odstraněné z tabulky DataTable. Má DataTable také DefaultView vlastnost. Tím se vrátí výchozí hodnota DataView tabulky. Pokud například chcete vytvořit vlastní zobrazení v tabulce, nastavte RowFilter na DataView vrácené .DefaultView

Pokud chcete vytvořit filtrované a seřazené zobrazení dat, nastavte hodnoty RowFilter a Sort vlastnosti. Pak použijte Item[] vlastnost k vrácení jednoho DataRowView.

Můžete také přidat a odstranit ze sady řádků pomocí AddNew a Delete metod. Pokud použijete tyto metody, vlastnost může nastavit, aby bylo možné určit, RowStateFilter že pouze odstraněné řádky nebo nové řádky budou zobrazeny .DataView

Poznámka

Pokud explicitně nezadáte kritéria řazení , DataRowView objekty v DataView jsou seřazeny na základě indexu DataView odpovídajícího DataRow v objektu DataTable.RowsDataRowCollection.DataView

LINQ to DataSet umožňuje vývojářům vytvářet složité a výkonné dotazy DataSet pomocí LINQ. Dotaz LINQ to DataSet vrátí výčet DataRow objektů, který se ale ve scénáři vazby snadno nepoužívá. DataView lze vytvořit z dotazu LINQ to DataSet a převezme vlastnosti filtrování a řazení tohoto dotazu. LINQ to DataSet rozšiřuje funkce DataView tím, že poskytuje filtrování a řazení založené na výrazech LINQ, což umožňuje mnohem složitější a výkonnější operace filtrování a řazení než filtrování a řazení založené na řetězcích. Další informace najdete v tématu Datové vazby a LINQ to DataSet .

Konstruktory

Name Description
DataView()

Inicializuje novou instanci DataView třídy.

DataView(DataTable, String, String, DataViewRowState)

Inicializuje novou instanci DataView třídy se zadaným DataTable, RowFilter, Sorta DataViewRowState.

DataView(DataTable)

Inicializuje novou instanci DataView třídy se zadaným DataTable.

Vlastnosti

Name Description
AllowDelete

Získá nebo nastaví hodnotu, která označuje, zda jsou odstranění povolena.

AllowEdit

Získá nebo nastaví hodnotu, která označuje, zda jsou úpravy povoleny.

AllowNew

Získá nebo nastaví hodnotu, která určuje, zda lze nové řádky přidat pomocí AddNew() metody.

ApplyDefaultSort

Získá nebo nastaví hodnotu, která určuje, zda se má použít výchozí řazení. Výchozí řazení je (vzestupně) podle všech primárních klíčů, jak je určeno PrimaryKey.

Container

Získá kontejner pro komponentu.

(Zděděno od MarshalByValueComponent)
Count

Získá početzáznamůch DataViewRowFilterRowStateFilter

DataViewManager

Získá přidružené k DataViewManager tomuto zobrazení.

DesignMode

Získá hodnotu určující, zda komponenta je aktuálně v režimu návrhu.

(Zděděno od MarshalByValueComponent)
Events

Získá seznam obslužných rutin událostí, které jsou připojeny k této komponentě.

(Zděděno od MarshalByValueComponent)
IsInitialized

Získá hodnotu, která určuje, zda je komponenta inicializována.

IsOpen

Získá hodnotu, která označuje, zda zdroj dat je aktuálně otevřen a promítá zobrazení dat v objektu DataTable.

Item[Int32]

Získá řádek dat ze zadané tabulky.

RowFilter

Získá nebo nastaví výraz použitý k filtrování, které řádky jsou zobrazeny v souboru DataView.

RowStateFilter

Získá nebo nastaví filtr stavu řádku použitý v .DataView

Site

Získá nebo nastaví lokalitu komponenty.

(Zděděno od MarshalByValueComponent)
Sort

Získá nebo nastaví sloupec nebo sloupce řazení a pořadí řazení pro DataView.

Table

Získá nebo nastaví zdroj DataTable.

Metody

Name Description
AddNew()

Přidá nový řádek do řady DataView.

BeginInit()

Spustí inicializaci DataView formuláře nebo používaného jinou komponentou. Inicializace probíhá za běhu.

Close()

Zavře .DataView

ColumnCollectionChanged(Object, CollectionChangeEventArgs)

Nastane po DataColumnCollection úspěšném změně.

CopyTo(Array, Int32)

Zkopíruje položky do pole. Pouze pro rozhraní webových formulářů.

Delete(Int32)

Odstraní řádek v zadaném indexu.

Dispose()

Uvolní všechny prostředky používané nástrojem MarshalByValueComponent.

(Zděděno od MarshalByValueComponent)
Dispose(Boolean)

Odstraní prostředky (jiné než paměť) používané objektem DataView .

EndInit()

Ukončí inicializaci DataView formuláře nebo používaného jinou komponentou. Inicializace probíhá za běhu.

Equals(DataView)

Určuje, zda jsou zadané DataView instance považovány za stejné.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
Find(Object)

Vyhledá řádek podle DataView zadané hodnoty klíče řazení.

Find(Object[])

Vyhledá řádek podle DataView zadaných hodnot klíče řazení.

FindRows(Object)

Vrátí pole DataRowView objektů, jejichž sloupce odpovídají zadané hodnotě klíče řazení.

FindRows(Object[])

Vrátí pole DataRowView objektů, jejichž sloupce odpovídají zadané hodnotě klíče řazení.

GetEnumerator()

Získá enumerátor pro to DataView.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetService(Type)

Získá implementátor .IServiceProvider

(Zděděno od MarshalByValueComponent)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
IndexListChanged(Object, ListChangedEventArgs)

Nastane po DataView úspěšném změně.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
OnListChanged(ListChangedEventArgs)

ListChanged Vyvolá událost.

Open()

Otevře .DataView

Reset()

Vyhrazeno pouze pro interní použití.

ToString()

String Vrátí hodnotu obsahující název Component, pokud existuje. Tato metoda by neměla být přepsána.

(Zděděno od MarshalByValueComponent)
ToTable()

Vytvoří a vrátí novou DataTable na základě řádků v existujícím DataViewobjektu .

ToTable(Boolean, String[])

Vytvoří a vrátí novou DataTable na základě řádků v existujícím DataViewobjektu .

ToTable(String, Boolean, String[])

Vytvoří a vrátí novou DataTable na základě řádků v existujícím DataViewobjektu .

ToTable(String)

Vytvoří a vrátí novou DataTable na základě řádků v existujícím DataViewobjektu .

UpdateIndex()

Vyhrazeno pouze pro interní použití.

UpdateIndex(Boolean)

Vyhrazeno pouze pro interní použití.

Událost

Name Description
Disposed

Přidá obslužnou rutinu Disposed události pro naslouchání události v komponentě.

(Zděděno od MarshalByValueComponent)
Initialized

Nastane při inicializaci dokončení DataView .

ListChanged

Nastane, když se seznam spravovaný změnami DataView .

Explicitní implementace rozhraní

Name Description
IBindingList.AddIndex(PropertyDescriptor)

Popis tohoto člena naleznete v tématu AddIndex(PropertyDescriptor).

IBindingList.AddNew()

Popis tohoto člena naleznete v tématu AddNew().

IBindingList.AllowEdit

Popis tohoto člena naleznete v tématu AllowEdit.

IBindingList.AllowNew

Popis tohoto člena naleznete v tématu AllowNew.

IBindingList.AllowRemove

Popis tohoto člena naleznete v tématu AllowRemove.

IBindingList.ApplySort(PropertyDescriptor, ListSortDirection)

Popis tohoto člena naleznete v tématu ApplySort(PropertyDescriptor, ListSortDirection).

IBindingList.Find(PropertyDescriptor, Object)

Popis tohoto člena naleznete v tématu Find(PropertyDescriptor, Object).

IBindingList.IsSorted

Popis tohoto člena naleznete v tématu IsSorted.

IBindingList.RemoveIndex(PropertyDescriptor)

Popis tohoto člena naleznete v tématu RemoveIndex(PropertyDescriptor).

IBindingList.RemoveSort()

Popis tohoto člena naleznete v tématu RemoveSort().

IBindingList.SortDirection

Popis tohoto člena naleznete v tématu SortDirection.

IBindingList.SortProperty

Popis tohoto člena naleznete v tématu SortProperty.

IBindingList.SupportsChangeNotification

Popis tohoto člena naleznete v tématu SupportsChangeNotification.

IBindingList.SupportsSearching

Popis tohoto člena naleznete v tématu SupportsSearching.

IBindingList.SupportsSorting

Popis tohoto člena naleznete v tématu SupportsSorting.

IBindingListView.ApplySort(ListSortDescriptionCollection)

Popis tohoto člena naleznete v tématu ApplySort(ListSortDescriptionCollection).

IBindingListView.Filter

Popis tohoto člena naleznete v tématu Filter.

IBindingListView.RemoveFilter()

Popis tohoto člena naleznete v tématu RemoveFilter().

IBindingListView.SortDescriptions

Popis tohoto člena naleznete v tématu SortDescriptions.

IBindingListView.SupportsAdvancedSorting

Popis tohoto člena naleznete v tématu SupportsAdvancedSorting.

IBindingListView.SupportsFiltering

Popis tohoto člena naleznete v tématu SupportsFiltering.

ICollection.IsSynchronized

Popis tohoto člena naleznete v tématu IsSynchronized.

ICollection.SyncRoot

Popis tohoto člena naleznete v tématu SyncRoot.

IList.Add(Object)

Popis tohoto člena naleznete v tématu Add(Object).

IList.Clear()

Popis tohoto člena naleznete v tématu Clear().

IList.Contains(Object)

Popis tohoto člena naleznete v tématu Contains(Object).

IList.IndexOf(Object)

Popis tohoto člena naleznete v tématu IndexOf(Object).

IList.Insert(Int32, Object)

Popis tohoto člena naleznete v tématu Insert(Int32, Object).

IList.IsFixedSize

Popis tohoto člena naleznete v tématu IsFixedSize.

IList.IsReadOnly

Popis tohoto člena naleznete v tématu IsReadOnly.

IList.Item[Int32]

Popis tohoto člena naleznete v tématu Item[Int32].

IList.Remove(Object)

Popis tohoto člena naleznete v tématu Remove(Object).

IList.RemoveAt(Int32)

Popis tohoto člena naleznete v tématu RemoveAt(Int32).

ITypedList.GetItemProperties(PropertyDescriptor[])

Popis tohoto člena naleznete v tématu GetItemProperties(PropertyDescriptor[]).

ITypedList.GetListName(PropertyDescriptor[])

Popis tohoto člena naleznete v tématu GetListName(PropertyDescriptor[]).

Metody rozšíření

Name Description
AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede IEnumerable na IQueryable.

Cast<TResult>(IEnumerable)

Přetypuje prvky IEnumerable na zadaný typ.

OfType<TResult>(IEnumerable)

Filtruje prvky IEnumerable na základě zadaného typu.

Platí pro

Bezpečný přístup z více vláken

Tento typ je bezpečný pro operace čtení s více vlákny. Je nutné synchronizovat všechny operace zápisu.

Viz také