DataView Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje dostosowany widok DataTable do sortowania, filtrowania, wyszukiwania, edytowania i nawigacji. DataView nie przechowuje danych, ale reprezentuje połączony widok odpowiadającego mu DataTable. Zmiany danych DataViewbędą mieć wpływ na DataTable. Zmiany danych DataTablebędą mieć wpływ na wszystkie skojarzone DataView.
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
- Dziedziczenie
- Implementuje
Przykłady
Poniższy przykład tworzy jeden DataTable z jedną kolumną i pięcioma wierszami. Tworzone są dwa obiekty DataView, a RowStateFilter jest ustawiana w celu wyświetlenia różnych widoków danych tabeli. Następnie są drukowane wartości.
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
Poniższy przykład tworzy DataView zamówień online uporządkowanych według sumy z powodu zapytania 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
Uwagi
Główną funkcją DataView jest umożliwienie wiązania danych zarówno w formularzach Windows Forms, jak i web forms.
Ponadto można dostosować DataView w celu przedstawienia podzbioru danych z DataTable. Ta funkcja umożliwia posiadanie dwóch kontrolek powiązanych z tymi samymi DataTable, ale które pokazują różne wersje danych. Na przykład jedna kontrolka może być powiązana z DataView, która pokazuje wszystkie wiersze w tabeli, a druga może być skonfigurowana do wyświetlania tylko wierszy usuniętych z DataTable. Obiekt DataTable ma również właściwość DefaultView. Spowoduje to zwrócenie domyślnego DataView dla tabeli. Jeśli na przykład chcesz utworzyć widok niestandardowy w tabeli, ustaw RowFilter na DataView zwróconym przez DefaultView.
Aby utworzyć filtrowany i posortowany widok danych, ustaw właściwości RowFilter i Sort. Następnie użyj właściwości Item[], aby zwrócić pojedynczy DataRowView.
Możesz również dodawać i usuwać z zestawu wierszy przy użyciu metod AddNew i Delete. Jeśli używasz tych metod, właściwość RowStateFilter może ustawić, aby określić, że tylko usunięte wiersze lub nowe wiersze będą wyświetlane przez DataView.
Nuta
Jeśli nie określisz jawnie kryteriów sortowania dla DataView
, obiekty DataRowView
w DataView
są sortowane na podstawie indeksu odpowiadającego DataRow
elementu DataView w DataTable.Rows
DataRowCollection
.
LinQ to DataSet umożliwia deweloperom tworzenie złożonych, zaawansowanych zapytań dotyczących DataSet przy użyciu LINQ. Zapytanie LINQ to DataSet zwraca wyliczenie obiektów DataRow, które nie jest jednak łatwo używane w scenariuszu powiązania. DataView można utworzyć na podstawie zapytania LINQ to DataSet i pobiera właściwości filtrowania i sortowania tego zapytania. LinQ to DataSet rozszerza funkcjonalność DataView, zapewniając filtrowanie i sortowanie oparte na wyrażeniach LINQ, co umożliwia znacznie bardziej złożone i zaawansowane operacje filtrowania i sortowania niż filtrowanie i sortowanie oparte na ciągach. Aby uzyskać więcej informacji, zobacz Powiązanie danych i LINQ to DataSet.
Konstruktory
DataView() |
Inicjuje nowe wystąpienie klasy DataView. |
DataView(DataTable) |
Inicjuje nowe wystąpienie klasy DataView z określonym DataTable. |
DataView(DataTable, String, String, DataViewRowState) |
Inicjuje nowe wystąpienie klasy DataView z określonymi DataTable, RowFilter, Sorti DataViewRowState. |
Właściwości
AllowDelete |
Pobiera lub ustawia wartość wskazującą, czy usunięcia są dozwolone. |
AllowEdit |
Pobiera lub ustawia wartość wskazującą, czy edycje są dozwolone. |
AllowNew |
Pobiera lub ustawia wartość wskazującą, czy można dodać nowe wiersze przy użyciu metody AddNew(). |
ApplyDefaultSort |
Pobiera lub ustawia wartość wskazującą, czy używać sortowania domyślnego. Sortowanie domyślne to (rosnąco) według wszystkich kluczy podstawowych określonych przez PrimaryKey. |
Container |
Pobiera kontener dla składnika. (Odziedziczone po MarshalByValueComponent) |
Count |
Pobiera liczbę rekordów w DataView po zastosowaniu RowFilter i RowStateFilter. |
DataViewManager |
Pobiera DataViewManager skojarzone z tym widokiem. |
DesignMode |
Pobiera wartość wskazującą, czy składnik jest obecnie w trybie projektowania. (Odziedziczone po MarshalByValueComponent) |
Events |
Pobiera listę programów obsługi zdarzeń dołączonych do tego składnika. (Odziedziczone po MarshalByValueComponent) |
IsInitialized |
Pobiera wartość wskazującą, czy składnik jest inicjowany. |
IsOpen |
Pobiera wartość wskazującą, czy źródło danych jest obecnie otwarte i wyświetla widoki danych na DataTable. |
Item[Int32] |
Pobiera wiersz danych z określonej tabeli. |
RowFilter |
Pobiera lub ustawia wyrażenie używane do filtrowania wierszy wyświetlanych w DataView. |
RowStateFilter |
Pobiera lub ustawia filtr stanu wiersza używany w DataView. |
Site |
Pobiera lub ustawia lokację składnika. (Odziedziczone po MarshalByValueComponent) |
Sort |
Pobiera lub ustawia sortowanie kolumn lub kolumn oraz kolejność sortowania dla DataView. |
Table |
Pobiera lub ustawia źródło DataTable. |
Metody
AddNew() |
Dodaje nowy wiersz do DataView. |
BeginInit() |
Rozpoczyna inicjowanie DataView używanego w formularzu lub używanego przez inny składnik. Inicjowanie odbywa się w czasie wykonywania. |
Close() |
Zamyka DataView. |
ColumnCollectionChanged(Object, CollectionChangeEventArgs) |
Występuje po pomyślnym zmianie DataColumnCollection. |
CopyTo(Array, Int32) |
Kopiuje elementy do tablicy. Tylko w przypadku interfejsów formularzy sieci Web. |
Delete(Int32) |
Usuwa wiersz w określonym indeksie. |
Dispose() |
Zwalnia wszystkie zasoby używane przez MarshalByValueComponent. (Odziedziczone po MarshalByValueComponent) |
Dispose(Boolean) |
Usuwa zasoby (inne niż pamięć) używane przez obiekt DataView. |
EndInit() |
Kończy inicjowanie DataView używanego w formularzu lub używanego przez inny składnik. Inicjowanie odbywa się w czasie wykonywania. |
Equals(DataView) |
Określa, czy określone wystąpienia DataView są traktowane jako równe. |
Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
Find(Object) |
Znajduje wiersz w DataView według określonej wartości klucza sortowania. |
Find(Object[]) |
Znajduje wiersz w DataView według określonych wartości klucza sortowania. |
FindRows(Object) |
Zwraca tablicę obiektów DataRowView, których kolumny pasują do określonej wartości klucza sortowania. |
FindRows(Object[]) |
Zwraca tablicę obiektów DataRowView, których kolumny pasują do określonej wartości klucza sortowania. |
GetEnumerator() |
Pobiera moduł wyliczający dla tego DataView. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetService(Type) |
Pobiera implementator IServiceProvider. (Odziedziczone po MarshalByValueComponent) |
GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
IndexListChanged(Object, ListChangedEventArgs) |
Występuje po pomyślnym zmianie DataView. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
OnListChanged(ListChangedEventArgs) |
Zgłasza zdarzenie ListChanged. |
Open() |
Otwiera DataView. |
Reset() |
Zarezerwowane tylko do użytku wewnętrznego. |
ToString() |
Zwraca String zawierającą nazwę Component, jeśli istnieje. Ta metoda nie powinna być zastępowana. (Odziedziczone po MarshalByValueComponent) |
ToTable() |
Tworzy i zwraca nowy DataTable na podstawie wierszy w istniejącym DataView. |
ToTable(Boolean, String[]) |
Tworzy i zwraca nowy DataTable na podstawie wierszy w istniejącym DataView. |
ToTable(String) |
Tworzy i zwraca nowy DataTable na podstawie wierszy w istniejącym DataView. |
ToTable(String, Boolean, String[]) |
Tworzy i zwraca nowy DataTable na podstawie wierszy w istniejącym DataView. |
UpdateIndex() |
Zarezerwowane tylko do użytku wewnętrznego. |
UpdateIndex(Boolean) |
Zarezerwowane tylko do użytku wewnętrznego. |
Zdarzenia
Disposed |
Dodaje program obsługi zdarzeń do nasłuchiwania zdarzenia Disposed w składniku. (Odziedziczone po MarshalByValueComponent) |
Initialized |
Występuje po zakończeniu inicjowania DataView. |
ListChanged |
Występuje, gdy lista zarządzana przez DataView się zmienia. |
Jawne implementacje interfejsu
IBindingList.AddIndex(PropertyDescriptor) |
Aby uzyskać opis tego elementu członkowskiego, zobacz AddIndex(PropertyDescriptor). |
IBindingList.AddNew() |
Aby uzyskać opis tego elementu członkowskiego, zobacz AddNew(). |
IBindingList.AllowEdit |
Aby uzyskać opis tego elementu członkowskiego, zobacz AllowEdit. |
IBindingList.AllowNew |
Aby uzyskać opis tego elementu członkowskiego, zobacz AllowNew. |
IBindingList.AllowRemove |
Aby uzyskać opis tego elementu członkowskiego, zobacz AllowRemove. |
IBindingList.ApplySort(PropertyDescriptor, ListSortDirection) |
Aby uzyskać opis tego elementu członkowskiego, zobacz ApplySort(PropertyDescriptor, ListSortDirection). |
IBindingList.Find(PropertyDescriptor, Object) |
Aby uzyskać opis tego elementu członkowskiego, zobacz Find(PropertyDescriptor, Object). |
IBindingList.IsSorted |
Aby uzyskać opis tego elementu członkowskiego, zobacz IsSorted. |
IBindingList.RemoveIndex(PropertyDescriptor) |
Aby uzyskać opis tego elementu członkowskiego, zobacz RemoveIndex(PropertyDescriptor). |
IBindingList.RemoveSort() |
Aby uzyskać opis tego elementu członkowskiego, zobacz RemoveSort(). |
IBindingList.SortDirection |
Aby uzyskać opis tego elementu członkowskiego, zobacz SortDirection. |
IBindingList.SortProperty |
Aby uzyskać opis tego elementu członkowskiego, zobacz SortProperty. |
IBindingList.SupportsChangeNotification |
Aby uzyskać opis tego elementu członkowskiego, zobacz SupportsChangeNotification. |
IBindingList.SupportsSearching |
Aby uzyskać opis tego elementu członkowskiego, zobacz SupportsSearching. |
IBindingList.SupportsSorting |
Aby uzyskać opis tego elementu członkowskiego, zobacz SupportsSorting. |
IBindingListView.ApplySort(ListSortDescriptionCollection) |
Aby uzyskać opis tego elementu członkowskiego, zobacz ApplySort(ListSortDescriptionCollection). |
IBindingListView.Filter |
Aby uzyskać opis tego elementu członkowskiego, zobacz Filter. |
IBindingListView.RemoveFilter() |
Aby uzyskać opis tego elementu członkowskiego, zobacz RemoveFilter(). |
IBindingListView.SortDescriptions |
Aby uzyskać opis tego elementu członkowskiego, zobacz SortDescriptions. |
IBindingListView.SupportsAdvancedSorting |
Aby uzyskać opis tego elementu członkowskiego, zobacz SupportsAdvancedSorting. |
IBindingListView.SupportsFiltering |
Aby uzyskać opis tego elementu członkowskiego, zobacz SupportsFiltering. |
ICollection.IsSynchronized |
Aby uzyskać opis tego elementu członkowskiego, zobacz IsSynchronized. |
ICollection.SyncRoot |
Aby uzyskać opis tego elementu członkowskiego, zobacz SyncRoot. |
IList.Add(Object) |
Aby uzyskać opis tego elementu członkowskiego, zobacz Add(Object). |
IList.Clear() |
Aby uzyskać opis tego elementu członkowskiego, zobacz Clear(). |
IList.Contains(Object) |
Aby uzyskać opis tego elementu członkowskiego, zobacz Contains(Object). |
IList.IndexOf(Object) |
Aby uzyskać opis tego elementu członkowskiego, zobacz IndexOf(Object). |
IList.Insert(Int32, Object) |
Aby uzyskać opis tego elementu członkowskiego, zobacz Insert(Int32, Object). |
IList.IsFixedSize |
Aby uzyskać opis tego elementu członkowskiego, zobacz IsFixedSize. |
IList.IsReadOnly |
Aby uzyskać opis tego elementu członkowskiego, zobacz IsReadOnly. |
IList.Item[Int32] |
Aby uzyskać opis tego elementu członkowskiego, zobacz Item[Int32]. |
IList.Remove(Object) |
Aby uzyskać opis tego elementu członkowskiego, zobacz Remove(Object). |
IList.RemoveAt(Int32) |
Aby uzyskać opis tego elementu członkowskiego, zobacz RemoveAt(Int32). |
ITypedList.GetItemProperties(PropertyDescriptor[]) |
Aby uzyskać opis tego elementu członkowskiego, zobacz GetItemProperties(PropertyDescriptor[]). |
ITypedList.GetListName(PropertyDescriptor[]) |
Aby uzyskać opis tego elementu członkowskiego, zobacz GetListName(PropertyDescriptor[]). |
Metody rozszerzania
Dotyczy
Bezpieczeństwo wątkowe
Ten typ jest bezpieczny w przypadku wielowątkowych operacji odczytu. Należy zsynchronizować wszystkie operacje zapisu.