DataView Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.Rows
DataRowCollection
.
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í
Metody rozšíření
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é
- DataSet
- DataTable
- DataViewManager
- AsDataView
- datových sad
, datových tabulek a datových zobrazení (ADO.NET)