데이터 보기 관리
DataViewManager를 사용하여 DataView의 모든 테이블에 대한 뷰 설정을 관리할 수 있습니다. 관계를 탐색하는 표와 같이 여러 테이블에 바인딩할 컨트롤이 있는 경우에는 DataViewManager가 가장 적합합니다.
DataViewManager에는 DataSet의 테이블에 대한 뷰 설정에 사용되는 DataViewSetting 개체의 컬렉션이 있습니다. DataViewSettingCollection에는 DataSet의 각 테이블에 대해 하나의 DataViewSetting 개체가 있습니다. DataViewSetting을 사용하면 참조된 테이블의 기본 ApplyDefaultSort, Sort, RowFilter 및 RowStateFilter 속성을 설정할 수 있습니다. 이름 또는 서수 참조별로 또는 해당 특정 테이블 개체에 대한 참조를 전달하여 특정 테이블에 대한 DataViewSetting을 참조할 수 있습니다. 또한 DataViewSettings 속성을 사용하면 DataViewManager에 있는 DataViewSetting 개체의 컬렉션에 액세스할 수 있습니다.
다음 코드 예제에서는 SQL Server Northwind 데이터베이스의 Customers, Orders 및 Order Details 테이블로 DataSet를 채우고, 이들 테이블 간에 관계를 만들며, DataViewManager를 사용하여 기본 DataView 설정을 구성하고, DataViewManager에 DataGrid를 바인딩합니다. 이 예제에서는 DataSet의 모든 테이블에 대한 기본 DataView 설정을 기본 키에 따라 정렬하도록 구성한 다음(ApplyDefaultSort = true), Customers 테이블의 정렬 순서를 수정하여 CompanyName에 따라 정렬합니다.
' Assumes connection is a valid SqlConnection to Northwind.
' Create a Connection, DataAdapters, and a DataSet.
Dim custDA As SqlDataAdapter = New SqlDataAdapter( _
"SELECT CustomerID, CompanyName FROM Customers", connection)
Dim orderDA As SqlDataAdapter = New SqlDataAdapter( _
"SELECT OrderID, CustomerID FROM Orders", connection)
Dim ordDetDA As SqlDataAdapter = New SqlDataAdapter( _
"SELECT OrderID, ProductID, Quantity FROM [Order Details]", connection)
Dim custDS As DataSet = New DataSet()
' Open the Connection.
connection.Open()
' Fill the DataSet with schema information and data.
custDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
orderDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
ordDetDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
custDA.Fill(custDS, "Customers")
orderDA.Fill(custDS, "Orders")
ordDetDA.Fill(custDS, "OrderDetails")
' Close the Connection.
connection.Close()
' Create relationships.
custDS.Relations.Add("CustomerOrders", _
custDS.Tables("Customers").Columns("CustomerID"), _
custDS.Tables("Orders").Columns("CustomerID"))
custDS.Relations.Add("OrderDetails", _
custDS.Tables("Orders").Columns("OrderID"), _
custDS.Tables("OrderDetails").Columns("OrderID"))
' Create default DataView settings.
Dim viewManager As DataViewManager = New DataViewManager(custDS)
Dim viewSetting As DataViewSetting
For Each viewSetting In viewManager.DataViewSettings
viewSetting.ApplyDefaultSort = True
Next
viewManager.DataViewSettings("Customers").Sort = "CompanyName"
' Bind to a DataGrid.
Dim grid As System.Windows.Forms.DataGrid = New System.Windows.Forms.DataGrid()
grid.SetDataBinding(viewManager, "Customers")
// Assumes connection is a valid SqlConnection to Northwind.
// Create a Connection, DataAdapters, and a DataSet.
SqlDataAdapter custDA = new SqlDataAdapter(
"SELECT CustomerID, CompanyName FROM Customers", connection);
SqlDataAdapter orderDA = new SqlDataAdapter(
"SELECT OrderID, CustomerID FROM Orders", connection);
SqlDataAdapter ordDetDA = new SqlDataAdapter(
"SELECT OrderID, ProductID, Quantity FROM [Order Details]", connection);
DataSet custDS = new DataSet();
// Open the Connection.
connection.Open();
// Fill the DataSet with schema information and data.
custDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
orderDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
ordDetDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
custDA.Fill(custDS, "Customers");
orderDA.Fill(custDS, "Orders");
ordDetDA.Fill(custDS, "OrderDetails");
// Close the Connection.
connection.Close();
// Create relationships.
custDS.Relations.Add("CustomerOrders",
custDS.Tables["Customers"].Columns["CustomerID"],
custDS.Tables["Orders"].Columns["CustomerID"]);
custDS.Relations.Add("OrderDetails",
custDS.Tables["Orders"].Columns["OrderID"],
custDS.Tables["OrderDetails"].Columns["OrderID"]);
// Create default DataView settings.
DataViewManager viewManager = new DataViewManager(custDS);
foreach (DataViewSetting viewSetting in viewManager.DataViewSettings)
viewSetting.ApplyDefaultSort = true;
viewManager.DataViewSettings["Customers"].Sort = "CompanyName";
// Bind to a DataGrid.
System.Windows.Forms.DataGrid grid = new System.Windows.Forms.DataGrid();
grid.SetDataBinding(viewManager, "Customers");