다음을 통해 공유


DataView 클래스

정의

정렬, 필터링, 검색, 편집 및 탐색을 DataTable 위한 데이터 바인딩 가능 사용자 지정 보기를 나타냅니다. 데이터를 DataView 저장하지 않고 대신 해당 DataTable뷰의 연결된 뷰를 나타냅니다. DataView'의 데이터를 변경하면 DataTable. DataTable'의 데이터를 변경하면 연결된 모든 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
상속
구현

예제

다음 예제에서는 하나의 열과 5개의 행이 있는 단일 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 이 반환됩니다. 예를 들어 테이블에 사용자 지정 보기를 만들려면 반환DefaultViewRowFilter 값을 DataView 설정합니다.

필터링되고 정렬된 데이터 보기를 만들려면 해당 및 Sort 속성을 설정합니다RowFilter. 그런 다음, 속성을 사용하여 Item[] 단일 DataRowView을 반환합니다.

및 메서드를 사용하여 행 집합에서 추가 및 Delete 삭제할 AddNew 수도 있습니다. 이러한 메서드 RowStateFilter 를 사용하는 경우 삭제된 행 또는 새 행만 해당 행에 의해 DataView표시되도록 속성을 설정할 수 있습니다.

메모

정렬 조건을 DataView명시적으로 지정하지 않으면 개체는 DataViewDataRowView DataView의 해당 인덱스(에 있는 DataRowDataTable.RowsDataRowCollectionDataView)에 따라 정렬됩니다.

LINQ to DataSet을 사용하면 개발자가 LINQ를 사용하여 복잡하고 강력한 쿼리를 DataSet 만들 수 있습니다. 그러나 LINQ to DataSet 쿼리는 바인딩 시나리오에서 쉽게 사용할 수 없는 개체의 DataRow 열거형을 반환합니다. DataView 는 LINQ to DataSet 쿼리에서 만들 수 있으며 해당 쿼리의 필터링 및 정렬 특성을 사용합니다. LINQ to DataSet은 LINQ 식 기반 필터링 및 정렬을 제공하여 기능을 DataView 확장하므로 문자열 기반 필터링 및 정렬보다 훨씬 더 복잡하고 강력한 필터링 및 정렬 작업을 수행할 수 있습니다. 자세한 내용은 데이터 바인딩 및 LINQ to DataSet 을 참조하세요.

생성자

Name Description
DataView()

DataView 클래스의 새 인스턴스를 초기화합니다.

DataView(DataTable, String, String, DataViewRowState)

지정된 , SortRowFilterDataViewRowState.를 사용하여 클래스의 DataView 새 인스턴스를 DataTable초기화합니다.

DataView(DataTable)

지정된 클래스를 사용하여 클래스의 DataView 새 인스턴스를 초기화합니다 DataTable.

속성

Name Description
AllowDelete

삭제가 허용되는지 여부를 나타내는 값을 가져오거나 설정합니다.

AllowEdit

편집이 허용되는지 여부를 나타내는 값을 가져오거나 설정합니다.

AllowNew

메서드를 사용하여 AddNew() 새 행을 추가할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.

ApplyDefaultSort

기본 정렬을 사용할지 여부를 나타내는 값을 가져오거나 설정합니다. 기본 정렬은 지정한 대로 모든 기본 키에 의해 오름차순입니다 PrimaryKey.

Container

구성 요소의 컨테이너를 가져옵니다.

(다음에서 상속됨 MarshalByValueComponent)
Count

적용된 후 RowFilterRowStateFilter 의 레코드 DataView 수를 가져옵니다.

DataViewManager

DataViewManager 이 뷰와 연결된 값을 가져옵니다.

DesignMode

구성 요소가 현재 디자인 모드에 있는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 MarshalByValueComponent)
Events

이 구성 요소에 연결된 이벤트 처리기 목록을 가져옵니다.

(다음에서 상속됨 MarshalByValueComponent)
IsInitialized

구성 요소가 초기화되는지 여부를 나타내는 값을 가져옵니다.

IsOpen

데이터 원본이 현재 열려 있는지 여부를 나타내는 값을 가져오고 데이터의 DataTable뷰를 프로젝팅합니다.

Item[Int32]

지정된 테이블에서 데이터 행을 가져옵니다.

RowFilter

에서 볼 DataView행을 필터링하는 데 사용되는 식을 가져오거나 설정합니다.

RowStateFilter

에 사용되는 행 상태 필터를 DataView가져오거나 설정합니다.

Site

구성 요소의 사이트를 가져오거나 설정합니다.

(다음에서 상속됨 MarshalByValueComponent)
Sort

열 또는 열 정렬 및 정렬 순서를 DataView가져오거나 설정합니다.

Table

원본 DataTable을 가져오거나 설정합니다.

메서드

Name Description
AddNew()

에 새 행을 추가합니다 DataView.

BeginInit()

폼에서 사용되거나 다른 구성 요소에서 사용되는 초기화를 DataView 시작합니다. 초기화는 런타임에 발생합니다.

Close()

를 닫습니다 DataView.

ColumnCollectionChanged(Object, CollectionChangeEventArgs)

변경된 후에 DataColumnCollection 발생합니다.

CopyTo(Array, Int32)

항목을 배열에 복사합니다. Web Forms 인터페이스에만 해당합니다.

Delete(Int32)

지정된 인덱스에서 행을 삭제합니다.

Dispose()

에서 사용하는 모든 리소스를 MarshalByValueComponent해제합니다.

(다음에서 상속됨 MarshalByValueComponent)
Dispose(Boolean)

개체에서 사용하는 리소스(메모리 이외의)를 DataView 삭제합니다.

EndInit()

폼에서 사용되거나 다른 구성 요소에서 사용되는 초기화를 DataView 종료합니다. 초기화는 런타임에 발생합니다.

Equals(DataView)

지정된 DataView 인스턴스가 같은 것으로 간주되는지 여부를 결정합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
Find(Object)

지정된 정렬 키 값으로 DataView 행을 찾습니다.

Find(Object[])

지정된 정렬 키 값으로 DataView 행을 찾습니다.

FindRows(Object)

열이 지정된 정렬 키 값과 일치하는 개체의 DataRowView 배열을 반환합니다.

FindRows(Object[])

열이 지정된 정렬 키 값과 일치하는 개체의 DataRowView 배열을 반환합니다.

GetEnumerator()

DataView열거자를 가져옵니다.

GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetService(Type)

의 구현자를 IServiceProvider가져옵니다.

(다음에서 상속됨 MarshalByValueComponent)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
IndexListChanged(Object, ListChangedEventArgs)

변경된 후에 DataView 발생합니다.

MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
OnListChanged(ListChangedEventArgs)

ListChanged 이벤트를 발생시킵니다.

Open()

DataView엽니다.

Reset()

내부용으로만 예약됩니다.

ToString()

String(있는 경우)의 Component이름을 포함하는 값을 반환합니다. 이 메서드는 재정의해서는 안 됩니다.

(다음에서 상속됨 MarshalByValueComponent)
ToTable()

기존 행에 따라 새 DataTable 행을 만들고 반환합니다 DataView.

ToTable(Boolean, String[])

기존 행에 따라 새 DataTable 행을 만들고 반환합니다 DataView.

ToTable(String, Boolean, String[])

기존 행에 따라 새 DataTable 행을 만들고 반환합니다 DataView.

ToTable(String)

기존 행에 따라 새 DataTable 행을 만들고 반환합니다 DataView.

UpdateIndex()

내부용으로만 예약됩니다.

UpdateIndex(Boolean)

내부용으로만 예약됩니다.

이벤트

Name Description
Disposed

구성 요소에서 이벤트를 수신 대기하는 Disposed 이벤트 처리기를 추가합니다.

(다음에서 상속됨 MarshalByValueComponent)
Initialized

초기화가 DataView 완료되면 발생합니다.

ListChanged

변경 내용에 의해 관리되는 목록이 발생할 때 발생합니다 DataView .

명시적 인터페이스 구현

Name Description
IBindingList.AddIndex(PropertyDescriptor)

이 멤버에 대한 설명은 을 참조하세요 AddIndex(PropertyDescriptor).

IBindingList.AddNew()

이 멤버에 대한 설명은 을 참조하세요 AddNew().

IBindingList.AllowEdit

이 멤버에 대한 설명은 을 참조하세요 AllowEdit.

IBindingList.AllowNew

이 멤버에 대한 설명은 을 참조하세요 AllowNew.

IBindingList.AllowRemove

이 멤버에 대한 설명은 을 참조하세요 AllowRemove.

IBindingList.ApplySort(PropertyDescriptor, ListSortDirection)

이 멤버에 대한 설명은 을 참조하세요 ApplySort(PropertyDescriptor, ListSortDirection).

IBindingList.Find(PropertyDescriptor, Object)

이 멤버에 대한 설명은 을 참조하세요 Find(PropertyDescriptor, Object).

IBindingList.IsSorted

이 멤버에 대한 설명은 을 참조하세요 IsSorted.

IBindingList.RemoveIndex(PropertyDescriptor)

이 멤버에 대한 설명은 을 참조하세요 RemoveIndex(PropertyDescriptor).

IBindingList.RemoveSort()

이 멤버에 대한 설명은 을 참조하세요 RemoveSort().

IBindingList.SortDirection

이 멤버에 대한 설명은 을 참조하세요 SortDirection.

IBindingList.SortProperty

이 멤버에 대한 설명은 을 참조하세요 SortProperty.

IBindingList.SupportsChangeNotification

이 멤버에 대한 설명은 을 참조하세요 SupportsChangeNotification.

IBindingList.SupportsSearching

이 멤버에 대한 설명은 을 참조하세요 SupportsSearching.

IBindingList.SupportsSorting

이 멤버에 대한 설명은 을 참조하세요 SupportsSorting.

IBindingListView.ApplySort(ListSortDescriptionCollection)

이 멤버에 대한 설명은 을 참조하세요 ApplySort(ListSortDescriptionCollection).

IBindingListView.Filter

이 멤버에 대한 설명은 을 참조하세요 Filter.

IBindingListView.RemoveFilter()

이 멤버에 대한 설명은 을 참조하세요 RemoveFilter().

IBindingListView.SortDescriptions

이 멤버에 대한 설명은 을 참조하세요 SortDescriptions.

IBindingListView.SupportsAdvancedSorting

이 멤버에 대한 설명은 을 참조하세요 SupportsAdvancedSorting.

IBindingListView.SupportsFiltering

이 멤버에 대한 설명은 을 참조하세요 SupportsFiltering.

ICollection.IsSynchronized

이 멤버에 대한 설명은 을 참조하세요 IsSynchronized.

ICollection.SyncRoot

이 멤버에 대한 설명은 을 참조하세요 SyncRoot.

IList.Add(Object)

이 멤버에 대한 설명은 을 참조하세요 Add(Object).

IList.Clear()

이 멤버에 대한 설명은 을 참조하세요 Clear().

IList.Contains(Object)

이 멤버에 대한 설명은 을 참조하세요 Contains(Object).

IList.IndexOf(Object)

이 멤버에 대한 설명은 을 참조하세요 IndexOf(Object).

IList.Insert(Int32, Object)

이 멤버에 대한 설명은 을 참조하세요 Insert(Int32, Object).

IList.IsFixedSize

이 멤버에 대한 설명은 을 참조하세요 IsFixedSize.

IList.IsReadOnly

이 멤버에 대한 설명은 을 참조하세요 IsReadOnly.

IList.Item[Int32]

이 멤버에 대한 설명은 을 참조하세요 Item[Int32].

IList.Remove(Object)

이 멤버에 대한 설명은 을 참조하세요 Remove(Object).

IList.RemoveAt(Int32)

이 멤버에 대한 설명은 을 참조하세요 RemoveAt(Int32).

ITypedList.GetItemProperties(PropertyDescriptor[])

이 멤버에 대한 설명은 을 참조하세요 GetItemProperties(PropertyDescriptor[]).

ITypedList.GetListName(PropertyDescriptor[])

이 멤버에 대한 설명은 을 참조하세요 GetListName(PropertyDescriptor[]).

확장명 메서드

Name Description
AsParallel(IEnumerable)

쿼리의 병렬 처리를 사용하도록 설정합니다.

AsQueryable(IEnumerable)

IEnumerable IQueryable변환합니다.

Cast<TResult>(IEnumerable)

IEnumerable 요소를 지정된 형식으로 캐스팅합니다.

OfType<TResult>(IEnumerable)

지정된 형식에 따라 IEnumerable 요소를 필터링합니다.

적용 대상

스레드 보안

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

추가 정보