次の方法で共有


DataView クラス

並べ替え、フィルタ処理、検索、編集、および移動を実行できる、データ連結可能な、カスタマイズされた DataTable のビューを表します。

この型のすべてのメンバの一覧については、DataView メンバ を参照してください。

System.Object
   System.ComponentModel.MarshalByValueComponent
      System.Data.DataView

Public Class DataView
   Inherits MarshalByValueComponent
   Implements IBindingList, IList, ICollection, IEnumerable, _
   ITypedList, ISupportInitialize
[C#]
public class DataView : MarshalByValueComponent, IBindingList,
   IList, ICollection, IEnumerable, ITypedList, ISupportInitialize
[C++]
public __gc class DataView : public MarshalByValueComponent,
   IBindingList, IList, ICollection, IEnumerable, ITypedList,
   ISupportInitialize
[JScript]
public class DataView extends MarshalByValueComponent implements
   IBindingList, IList, ICollection, IEnumerable, ITypedList,
   ISupportInitialize

スレッドセーフ

この型は、マルチスレッド読み取り操作に対して安全です。すべての書き込み操作の同期をとる必要があります。

解説

DataView の主な機能は、Windows フォームと Web フォームの両方でデータを連結できるようにすることです。

DataView をカスタマイズして、 DataTable からデータのサブセットを表示することもできます。この機能を使用すると、同じ DataTable に連結されているが異なるバージョンのデータを表示できる 2 つのコントロールを使用できます。たとえば、一方のコントロールをテーブル内のすべての行が表示される DataView に連結し、他方のコントロールを DataTable から削除された行だけを表示するよう構成できます。 DataTable には、テーブルの既定の DataView を返す DefaultView プロパティもあります。たとえば、テーブルのカスタム ビューを作成する場合は、 DefaultView によって返された DataView に対して RowFilter を設定します。

フィルタ処理され並べ替えられたデータのビューを作成するには、 RowFilter プロパティと Sort プロパティを設定します。次に、 Item プロパティを使用して単一の DataRowView を返します。

AddNew メソッドと Delete メソッドを使用する方法でも、行セットに行を追加したり、行を削除できます。これらのメソッドを使用するときは、削除された行または新しい行だけが DataView に表示されるように RowStateFilter プロパティを設定できます。

使用例

[Visual Basic, C#, C++] 1 つの列と 5 つの行で単一の DataTable を作成する例を次に示します。2 つの DataView オブジェクトを作成し、各オブジェクトが異なるテーブル データのビューを表示するように RowStateFilter を設定します。次に、値を出力します。

 
Private Sub DemonstrateDataView()
   ' Create one DataTable with one column.
   Dim myTable As DataTable = New DataTable("myTable")
   Dim colItem As DataColumn = New DataColumn("item", Type.GetType("System.String"))
   myTable.Columns.Add(colItem)
   ' Add five items.
   Dim NewRow As DataRow
   Dim i As Integer
   For i = 0 To 4

      NewRow = myTable.NewRow()
      NewRow("item") = "Item " & i
      myTable.Rows.Add(NewRow)
   Next
   myTable.AcceptChanges()
   ' Create two DataView objects with the same table.
   Dim firstView As DataView = New DataView(myTable)
   Dim secondView As DataView = New DataView(myTable)

   ' Change the values in the table.
   myTable.Rows(0)("item") = "cat"
   myTable.Rows(1)("item") = "dog"

   ' Print current table values.
   PrintTableOrView(myTable, "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 myDataRowView As DataRowView
   myDataRowView = secondView.AddNew()
   myDataRowView("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 dv As DataView, ByVal label As String)
   Console.WriteLine(label)
   Dim i As Integer
   For i = 0 To dv.count - 1

      Console.WriteLine(dv(i)("item"))
   Next
   Console.WriteLine()
End Sub

Overloads Private Sub PrintTableOrView(ByVal t As DataTable, ByVal label As String)
   Console.WriteLine(label)
   Dim i As Integer
   For i = 0 To t.Rows.Count - 1
      Console.WriteLine(t.Rows(i)("item"))
   Next
   Console.WriteLine()
End Sub

[C#] 
private void DemonstrateDataView(){
   // Create one DataTable with one column.
   DataTable myTable = new DataTable("myTable");
   DataColumn colItem = new DataColumn("item",Type.GetType("System.String"));
   myTable.Columns.Add(colItem);
   // Add five items.
   DataRow NewRow;
   for(int i = 0; i <5; i++){
      NewRow = myTable.NewRow();
      NewRow["item"] = "Item " + i;
      myTable.Rows.Add(NewRow);
   }
   // Change the values in the table.
   myTable.Rows[0]["item"]="cat";
   myTable.Rows[1]["item"] = "dog";
   myTable.AcceptChanges();

   // Create two DataView objects with the same table.
   DataView firstView = new DataView(myTable);
   DataView secondView = new DataView(myTable);

   // Print current table values.
   PrintTableOrView(myTable,"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 myDataRowView;
   myDataRowView=secondView.AddNew();
   myDataRowView["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 t, string label){
   // This function prints values in the table or DataView.
   Console.WriteLine("\n" + label);
   for(int i = 0; i<t.Rows.Count;i++){
      Console.WriteLine("\t" + t.Rows[i]["item"]);
   }
   Console.WriteLine();
}

private void PrintTableOrView(DataView dv, string label){

   // This overload prints values in the table or DataView.
   Console.WriteLine("\n" + label);
   for(int i = 0; i<dv.Count;i++){
      Console.WriteLine("\t" + dv[i]["item"]);
   }
   Console.WriteLine();
}

[C++] 
private:
 void DemonstrateDataView(){
    // Create one DataTable with one column.
    DataTable* myTable = new DataTable(S"myTable");
    DataColumn* colItem = new DataColumn(S"item",Type::GetType(S"System.String"));
    myTable->Columns->Add(colItem);
    // Add five items.
    DataRow* NewRow;
    for(int i = 0; i <5; i++){
       NewRow = myTable->NewRow();
       NewRow->Item[S"item"] = String::Format( S"Item {0}", __box(i));
       myTable->Rows->Add(NewRow);
    }
    // Change the values in the table.
    myTable->Rows->Item[0]->Item[S"item"]=S"cat";
    myTable->Rows->Item[1]->Item[S"item"] = S"dog";
    myTable->AcceptChanges();
 
    // Create two DataView objects with the same table.
    DataView* firstView = new DataView(myTable);
    DataView* secondView = new DataView(myTable);
 
    // Print current table values.
    PrintTableOrView(myTable,S"Current Values in Table");
    
    // Set first DataView to show only modified versions of original rows.
    firstView->RowStateFilter=DataViewRowState::ModifiedOriginal ;
    // Print values.   
    PrintTableOrView(firstView,S"First DataView: ModifiedOriginal");
    // Add one New row to the second view.
    DataRowView* myDataRowView;
    myDataRowView=secondView->AddNew();
    myDataRowView->Item[S"item"] = S"fish";
    // Set second DataView to show modified versions of current rows, or New rows.
    secondView->RowStateFilter= static_cast<DataViewRowState>
       ( DataViewRowState::ModifiedCurrent | DataViewRowState::Added );
    // Print modified and Added rows.
    PrintTableOrView(secondView, S"Second DataView: ModifiedCurrent | Added");
 }
 
 void PrintTableOrView(DataTable* t, String* label){
    // This function prints values in the table or DataView.
    Console::WriteLine(S"\n{0}", label);
    for(int i = 0; i<t->Rows->Count;i++){
       Console::WriteLine(S"\t{0}", t->Rows->Item[i]->Item[S"item"]);
    }
    Console::WriteLine();
 }
 
 void PrintTableOrView(DataView* dv, String* label){
 
    // This overload prints values in the table or DataView.
    Console::WriteLine(S"\n{0}", label);
    for(int i = 0; i<dv->Count;i++){
       Console::WriteLine(S"\t{0}", dv->Item[i]->Item[S"item"]);
    }
    Console::WriteLine();
 }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Data

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System.Data (System.Data.dll 内)

参照

DataView メンバ | System.Data 名前空間 | DataSet | DataTable | DataViewManager