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ů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,
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í
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.