다음을 통해 공유


DataView 클래스

정렬, 필터링, 검색, 편집 및 탐색을 위해 데이터 바인딩할 수 있는 DataTable의 사용자 지정 뷰를 나타냅니다.

네임스페이스: System.Data
어셈블리: System.Data(system.data.dll)

구문

‘선언
Public Class DataView
    Inherits MarshalByValueComponent
    Implements IBindingListView, IBindingList, IList, ICollection, _
    IEnumerable, ITypedList, ISupportInitializeNotification, ISupportInitialize
‘사용 방법
Dim instance As DataView
public class DataView : MarshalByValueComponent, IBindingListView, IBindingList, IList, 
    ICollection, IEnumerable, ITypedList, ISupportInitializeNotification, ISupportInitialize
public ref class DataView : public MarshalByValueComponent, IBindingListView, IBindingList, IList, 
    ICollection, IEnumerable, ITypedList, ISupportInitializeNotification, ISupportInitialize
public class DataView extends MarshalByValueComponent implements IBindingListView, IBindingList, 
    IList, ICollection, IEnumerable, ITypedList, ISupportInitializeNotification, 
    ISupportInitialize
public class DataView extends MarshalByValueComponent implements IBindingListView, IBindingList, 
    IList, ICollection, IEnumerable, ITypedList, ISupportInitializeNotification, 
    ISupportInitialize

설명

DataView의 주요 기능은 Windows Forms뿐만 아니라 Web Forms에서도 데이터를 바인딩할 수 있도록 하는 것입니다.

또한 DataView를 사용자 지정하여 DataTable에서 데이터의 하위 집합을 나타낼 수 있습니다. 이 기능을 사용하면 두 컨트롤을 동일한 DataTable에 바인딩하여 서로 다른 버전의 데이터를 표시할 수 있습니다. 예를 들어, 한 컨트롤은 DataView에 바인딩하여 테이블의 모든 행을 표시하고, 다른 컨트롤은 DataTable에서 삭제된 행만 표시하도록 구성할 수 있습니다. DataTable에는 DefaultView 속성도 있습니다. 이 속성은 테이블에 대한 기본 DataView를 반환합니다. 예를 들어, 테이블에 사용자 지정 뷰를 만들려면 DefaultView에서 반환하는 DataViewRowFilter를 설정합니다.

필터링되고 정렬된 데이터 뷰를 만들려면 RowFilterSort 속성을 설정합니다. 그런 다음 Item 속성을 사용하여 DataRowView를 하나 반환합니다.

AddNewDelete 메서드를 사용하여 행 집합에 추가하거나 삭제할 수도 있습니다. 이런 메서드를 사용할 때 RowStateFilter 속성을 설정하여 삭제한 행 또는 새 행만을 DataView에 표시되도록 지정할 수 있습니다.

예제

다음 예제에서는 한 개의 열과 다섯 개의 행이 있는 단순 DataTable을 만듭니다. 두 개의 DataView 개체가 만들어지고 각 개체에 RowStateFilter가 설정되어 서로 다른 테이블 데이터 뷰를 표시합니다. 그런 다음 값이 출력됩니다.

Private Sub DemonstrateDataView()
    ' Create one DataTable with one column.
    Dim table As DataTable = New DataTable("table")
    Dim colItem As DataColumn = 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 DataView = New DataView(table)
    Dim secondView As DataView = 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
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.Rows[0]["item"]="cat";
    table.Rows[1]["item"] = "dog";
    table.AcceptChanges();
 
    // 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" + 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("\table" + view[i]["item"]);
    }
    Console.WriteLine();
}

상속 계층 구조

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

스레드로부터의 안전성

이 형식은 다중 스레드 읽기 작업에 안전합니다. 쓰기 작업을 동기화해야 합니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

DataView 멤버
System.Data 네임스페이스
DataSet 클래스
DataTable 클래스
DataViewManager