Sdílet prostřednictvím


DataView Třída

Definice

Představuje datovou vazbu, přizpůsobitelné zobrazení DataTable pro řazení, filtrování, vyhledávání, úpravy a navigaci. DataView neukládá data, ale představuje propojené zobrazení odpovídajících DataTable. Změny dat DataViewovlivní DataTable. Změny dat DataTableovlivní všechny DataViewpřidružené k datům.

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 DataTable s jedním sloupcem a pěti řádky. Vytvoří se dva DataView objekty a RowStateFilter je u každého nastavená tak, aby zobrazovala 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ávek seřazených 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í DataView je umožnit datové vazby ve Windows Forms i webových formulářích.

Kromě toho lze DataView přizpůsobit tak, aby prezentovat podmnožinu dat z DataTable. Tato funkce umožňuje mít dva ovládací prvky vázané na stejnou DataTable, ale zobrazují různé verze dat. Jeden ovládací prvek může být například vázán na DataView, který zobrazuje všechny řádky v tabulce, a druhý může být nakonfigurován tak, aby zobrazoval pouze řádky odstraněné z DataTable. DataTable má také DefaultView vlastnost. Tím se vrátí výchozí 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 RowFilter a Sort vlastnosti. Potom použijte vlastnost Item[] k vrácení jednoho DataRowView.

Můžete také přidat a odstranit ze sady řádků pomocí AddNew a Delete metod. Při použití těchto metod lze vlastnost RowStateFilter nastavit tak, aby se v DataViewzobrazovaly pouze odstraněné řádky nebo nové řádky .

Poznámka

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

LINQ to DataSet umožňuje vývojářům vytvářet složité a výkonné dotazy prostřednictvím DataSet pomocí LINQ. Dotaz LINQ to DataSet vrátí výčet DataRow objektů, které se ale snadno nepoužívají ve scénáři vazby. 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

DataView()

Inicializuje novou instanci DataView třídy.

DataView(DataTable)

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

DataView(DataTable, String, String, DataViewRowState)

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

Vlastnosti

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á označuje, zda lze nové řádky přidat pomocí AddNew() metoda.

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čet záznamů v DataView po použití RowFilter a RowStateFilter.

DataViewManager

Získá DataViewManager přidružené k 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 DataTable.

Item[Int32]

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

RowFilter

Získá nebo nastaví výraz použitý k filtrování řádků, které jsou zobrazeny v 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

AddNew()

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

BeginInit()

Spustí inicializaci DataView, která se používá ve formuláři nebo používá jinou komponentou. Inicializace probíhá za běhu.

Close()

Zavře DataView.

ColumnCollectionChanged(Object, CollectionChangeEventArgs)

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

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é MarshalByValueComponent.

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

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

EndInit()

Ukončí inicializaci DataView, která se používá ve formuláři nebo používá 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 v DataView podle zadané hodnoty klíče řazení.

Find(Object[])

Vyhledá řádek v DataView podle 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 tento 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 úspěšném změně DataView.

MemberwiseClone()

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

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

Vyvolá událost ListChanged.

Open()

Otevře DataView.

Reset()

Vyhrazeno pouze pro interní použití.

ToString()

Vrátí String 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í nový DataTable na základě řádků v existujícím DataView.

ToTable(Boolean, String[])

Vytvoří a vrátí nový DataTable na základě řádků v existujícím DataView.

ToTable(String)

Vytvoří a vrátí nový DataTable na základě řádků v existujícím DataView.

ToTable(String, Boolean, String[])

Vytvoří a vrátí nový DataTable na základě řádků v existujícím DataView.

UpdateIndex()

Vyhrazeno pouze pro interní použití.

UpdateIndex(Boolean)

Vyhrazeno pouze pro interní použití.

Událost

Disposed

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

(Zděděno od MarshalByValueComponent)
Initialized

Nastane při inicializaci DataView je dokončena.

ListChanged

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

Explicitní implementace rozhraní

IBindingList.AddIndex(PropertyDescriptor)

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

IBindingList.AddNew()

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

IBindingList.AllowEdit

Popis tohoto člena najdete v tématu AllowEdit.

IBindingList.AllowNew

Popis tohoto člena najdete v tématu AllowNew.

IBindingList.AllowRemove

Popis tohoto člena najdete v tématu AllowRemove.

IBindingList.ApplySort(PropertyDescriptor, ListSortDirection)

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

IBindingList.Find(PropertyDescriptor, Object)

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

IBindingList.IsSorted

Popis tohoto člena najdete v tématu IsSorted.

IBindingList.RemoveIndex(PropertyDescriptor)

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

IBindingList.RemoveSort()

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

IBindingList.SortDirection

Popis tohoto člena najdete v tématu SortDirection.

IBindingList.SortProperty

Popis tohoto člena najdete v tématu SortProperty.

IBindingList.SupportsChangeNotification

Popis tohoto člena najdete v tématu SupportsChangeNotification.

IBindingList.SupportsSearching

Popis tohoto člena najdete v tématu SupportsSearching.

IBindingList.SupportsSorting

Popis tohoto člena najdete v tématu SupportsSorting.

IBindingListView.ApplySort(ListSortDescriptionCollection)

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

IBindingListView.Filter

Popis tohoto člena najdete v tématu Filter.

IBindingListView.RemoveFilter()

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

IBindingListView.SortDescriptions

Popis tohoto člena najdete v tématu SortDescriptions.

IBindingListView.SupportsAdvancedSorting

Popis tohoto člena najdete v tématu SupportsAdvancedSorting.

IBindingListView.SupportsFiltering

Popis tohoto člena najdete v tématu SupportsFiltering.

ICollection.IsSynchronized

Popis tohoto člena najdete v tématu IsSynchronized.

ICollection.SyncRoot

Popis tohoto člena najdete v tématu SyncRoot.

IList.Add(Object)

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

IList.Clear()

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

IList.Contains(Object)

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

IList.IndexOf(Object)

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

IList.Insert(Int32, Object)

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

IList.IsFixedSize

Popis tohoto člena najdete v tématu IsFixedSize.

IList.IsReadOnly

Popis tohoto člena najdete v tématu IsReadOnly.

IList.Item[Int32]

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

IList.Remove(Object)

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

IList.RemoveAt(Int32)

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

ITypedList.GetItemProperties(PropertyDescriptor[])

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

ITypedList.GetListName(PropertyDescriptor[])

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

Metody rozšíření

GetKeyedService<T>(IServiceProvider, Object)

Získá službu typu T z IServiceProvider.

GetKeyedServices(IServiceProvider, Type, Object)

Získá výčet služeb typu serviceType z IServiceProvider.

GetKeyedServices<T>(IServiceProvider, Object)

Získá výčet služeb typu T z IServiceProvider.

GetRequiredKeyedService(IServiceProvider, Type, Object)

Získá službu typu serviceType z IServiceProvider.

GetRequiredKeyedService<T>(IServiceProvider, Object)

Získá službu typu T z IServiceProvider.

CreateAsyncScope(IServiceProvider)

Vytvoří novou AsyncServiceScope, která se dá použít k vyřešení služeb s vymezeným oborem.

CreateScope(IServiceProvider)

Vytvoří novou IServiceScope, která se dá použít k vyřešení služeb s vymezeným oborem.

GetRequiredService(IServiceProvider, Type)

Získejte službu typu serviceType z IServiceProvider.

GetRequiredService<T>(IServiceProvider)

Získejte službu typu T z IServiceProvider.

GetService<T>(IServiceProvider)

Získejte službu typu T z IServiceProvider.

GetServices(IServiceProvider, Type)

Získejte výčet služeb typu serviceType z IServiceProvider.

GetServices<T>(IServiceProvider)

Získejte výčet služeb typu T z IServiceProvider.

GetFakeLogCollector(IServiceProvider)

Získá objekt, který shromažďuje záznamy protokolu odeslané do falešného protokolovacího nástroje.

GetFakeRedactionCollector(IServiceProvider)

Získá falešné redactor instance kolekce z kontejneru injektáž závislostí.

Cast<TResult>(IEnumerable)

Přetypuje prvky IEnumerable na zadaný typ.

OfType<TResult>(IEnumerable)

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

AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede IEnumerable na IQueryable.

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é