DataView 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
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
- 繼承
- 實作
範例
下列範例會建立具有一個數據行和五個數據列的單一 DataTable。 系統會建立兩個 DataView 物件,而且每個物件上都會設定 RowStateFilter 以顯示數據表數據的不同檢視。 然後會列印這些值。
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
下列範例會建立依 LINQ to DataSet 查詢總計排序的在線訂單 DataView:
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
備註
DataView 的主要功能是允許 Windows Forms 和 Web Forms 上的數據系結。
此外,您可以自定義 DataView,以顯示來自 DataTable的數據子集。 這項功能可讓您將兩個控件系結至相同的 DataTable,但顯示不同版本的數據。 例如,一個控件可能會系結至顯示數據表中所有數據列的 DataView,而第二個控件可能設定為只顯示已從 DataTable中刪除的數據列。 DataTable 也有 DefaultView 屬性。 這會傳回數據表的預設 DataView。 例如,如果您想要在數據表上建立自定義檢視,請在 DefaultView所傳回的 DataView 上設定 RowFilter。
若要建立篩選和排序的數據檢視,請設定 RowFilter 和 Sort 屬性。 然後,使用 Item[] 屬性傳回單一 DataRowView。
您也可以使用 AddNew 和 Delete 方法,從一組數據列新增和刪除。 當您使用這些方法時,RowStateFilter 屬性可以設定為指定只有已刪除的數據列或 DataView顯示新數據列。
注意
如果您未明確指定 DataView
的排序準則,則會根據 DataTable.Rows
DataRowCollection
中 DataView 對應 DataRow
索引來排序 DataView
中的 DataRowView
物件。
LINQ to DataSet 可讓開發人員使用 LINQ,透過 DataSet 建立複雜且功能強大的查詢。 LINQ to DataSet 查詢會傳回 DataRow 物件的列舉,不過,這在系結案例中不容易使用。 您可以從 LINQ to DataSet 查詢建立 DataView,並採用該查詢的篩選和排序特性。 LINQ to DataSet 藉由提供 LINQ 運算式型篩選和排序來擴充 DataView 的功能,這可讓比字串型篩選和排序更複雜且強大的篩選和排序作業。 如需詳細資訊,請參閱 數據系結和 LINQ to DataSet。
建構函式
DataView() |
初始化 DataView 類別的新實例。 |
DataView(DataTable) | |
DataView(DataTable, String, String, DataViewRowState) |
使用指定的 DataTable、RowFilter、Sort和 DataViewRowState,初始化 DataView 類別的新實例。 |
屬性
AllowDelete |
取得或設定值,這個值表示是否允許刪除。 |
AllowEdit |
取得或設定值,這個值表示是否允許編輯。 |
AllowNew |
取得或設定值,這個值表示是否可以使用 AddNew() 方法加入新的數據列。 |
ApplyDefaultSort |
取得或設定值,這個值表示是否要使用預設排序。 默認排序是由 PrimaryKey所指定的所有主鍵(遞增)。 |
Container |
取得元件的容器。 (繼承來源 MarshalByValueComponent) |
Count |
取得套用 RowFilter 和 RowStateFilter 之後,DataView 中的記錄數目。 |
DataViewManager |
取得與此檢視相關聯的 DataViewManager。 |
DesignMode |
取得值,指出元件目前是否處於設計模式。 (繼承來源 MarshalByValueComponent) |
Events |
取得附加至此元件的事件處理程式清單。 (繼承來源 MarshalByValueComponent) |
IsInitialized |
取得值,這個值表示元件是否已初始化。 |
IsOpen |
取得值,這個值表示數據源目前是否開啟,並在 DataTable上投影數據檢視。 |
Item[Int32] |
從指定的數據表取得數據列。 |
RowFilter |
取得或設定表達式,用來篩選在 DataView中檢視的數據列。 |
RowStateFilter |
取得或設定 DataView中使用的數據列狀態篩選。 |
Site |
取得或設定元件的月臺。 (繼承來源 MarshalByValueComponent) |
Sort |
取得或設定排序數據行或數據行,以及 DataView排序順序。 |
Table |
取得或設定來源 DataTable。 |
方法
事件
Disposed |
加入事件處理程式,以接聽元件上的 Disposed 事件。 (繼承來源 MarshalByValueComponent) |
Initialized |
在完成 DataView 初始化時發生。 |
ListChanged |
發生於由 DataView 管理的清單變更時。 |
明確介面實作
擴充方法
適用於
執行緒安全性
此類型適用於多線程讀取作業。 您必須同步處理任何寫入作業。