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 databindable, přizpůsobené zobrazení objektu DataTable pro řazení, filtrování, vyhledávání, úpravy a navigaci. Objekt DataView neukládá data, ale představuje propojené zobrazení odpovídajícího DataTableobjektu . DataViewZměny dat ovlivní DataTable. DataTableZměny dat ovlivní všechna DataViewdata, která jsou k němu přidružená.
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 u každého se nastaví objekt , aby zobrazoval 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é podle celkové splatnosti z LINQ to DataSet dotazu:
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í je DataView umožnit datové vazby na model Windows Forms i Web Forms.
Kromě toho lze přizpůsobit tak, DataView aby vygeneroval 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. Například jeden ovládací prvek může být svázaný s objektem DataView , který zobrazuje všechny řádky v tabulce, a druhý může být nakonfigurován tak, aby zobrazoval pouze řádky, které byly odstraněny z DataTable. Objekt DataTable má DefaultView také vlastnost . Tím se vrátí výchozí hodnota DataView tabulky. Pokud například chcete vytvořit vlastní zobrazení tabulky, nastavte RowFilter hodnotu na DataView hodnotu vrácenou parametrem DefaultView.
Pokud chcete vytvořit filtrované a seřazené zobrazení dat, nastavte RowFilter vlastnosti a Sort . Potom použijte Item[] vlastnost k vrácení jediného DataRowViewobjektu .
Můžete také přidávat a odstraňovat ze sady řádků pomocí AddNew metod a Delete . Při použití těchto metod lze vlastnost nastavit tak, RowStateFilter aby se v objektu DataViewzobrazily pouze odstraněné řádky nebo nové řádky.
Poznámka
Pokud explicitně neurčíte kritéria řazení pro DataView
, objekty v DataView
souboru jsou seřazeny na základě indexu dataView odpovídajícího DataRow
objektu v objektu DataTable.Rows
DataRowCollection
.DataRowView
LINQ to DataSet umožňuje vývojářům vytvářet složité a výkonné dotazy prostřednictvím DataSet rozhraní LINQ. Dotaz LINQ to DataSet však vrátí výčet DataRow objektů, který není snadno použit ve scénáři vazby. DataViewlze vytvořit z LINQ to DataSet dotazu a přebírá charakteristiky filtrování a řazení tohoto dotazu. LINQ to DataSet rozšiřuje funkce DataView objektu tím, že poskytuje filtrování a řazení na základě výrazů LINQ, které 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 DataView třídy se zadaným DataTableparametrem . |
DataView(DataTable, String, String, DataViewRowState) |
Inicializuje novou instanci DataView třídy se zadanými DataTable, RowFilter, Sorta DataViewRowState. |
Vlastnosti
AllowDelete |
Získá nebo nastaví hodnotu, která označuje, zda jsou povoleny odstranění. |
AllowEdit |
Získá nebo nastaví hodnotu, která označuje, zda jsou povoleny úpravy. |
AllowNew |
Získá nebo nastaví hodnotu, která označuje, zda nové řádky lze přidat pomocí AddNew() metody . |
ApplyDefaultSort |
Získá nebo nastaví hodnotu, která označuje, zda použít výchozí řazení. Výchozí řazení je (vzestupně) podle všech primárních klíčů podle parametru PrimaryKey. |
Container |
Získá kontejner pro komponentu. (Zděděno od MarshalByValueComponent) |
Count |
Získá počet záznamů v následující DataViewRowFilter a RowStateFilter byly použity. |
DataViewManager |
Získá přidružený k DataViewManager tomuto zobrazení. |
DesignMode |
Získá hodnotu označující, zda je komponenta 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á označ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í řádků, které jsou zobrazeny v objektu DataView. |
RowStateFilter |
Získá nebo nastaví filtr stavu řádku použitý v objektu 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á je použita ve formuláři nebo používána jinou komponentou. Inicializace probíhá za běhu. |
Close() |
Zavře .DataView |
ColumnCollectionChanged(Object, CollectionChangeEventArgs) |
Vyvolá se po DataColumnCollection úspěšné změně. |
CopyTo(Array, Int32) |
Zkopíruje položky do pole. Pouze pro rozhraní Web Forms. |
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 prvku, který je použit ve formuláři nebo používán 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čí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
Find(Object) |
Najde řádek v argumentu DataView podle zadané hodnoty klíče řazení. |
Find(Object[]) |
Vyhledá řádek v parametru 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í hashovací funkce. (Zděděno od Object) |
GetService(Type) |
Získá implementátor objektu IServiceProvider. (Zděděno od MarshalByValueComponent) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
IndexListChanged(Object, ListChangedEventArgs) |
Vyvolá se po DataView úspěšné změně. |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (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 , Componentpokud 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 DataViewobjektu . |
ToTable(Boolean, String[]) |
Vytvoří a vrátí nový DataTable na základě řádků v existujícím DataViewobjektu . |
ToTable(String) |
Vytvoří a vrátí nový DataTable na základě řádků v existujícím DataViewobjektu . |
ToTable(String, Boolean, String[]) |
Vytvoří a vrátí nový 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
Disposed |
Přidá obslužnou rutinu události pro naslouchání Disposed události komponenty. (Zděděno od MarshalByValueComponent) |
Initialized |
Vyvolá se při inicializaci je dokončena DataView . |
ListChanged |
Vyvolá se při seznamu spravovaném DataView změnami. |
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í ve více vláknech. Je nutné synchronizovat všechny operace zápisu.
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro