The DataView Class

The master/details views shown earlier illustrate that the data-binding architecture is capable of showing a filtered view of the contents of a table—if you bind a DataGrid or a ListBox to a child of a relation in a data source, you will just see the related items in the child table instead of all of them. This relational view is just one of the ways in which we can filter the underlying data. The data-binding architecture also provides the DataView class, whose purpose is to provide modified views of tables.

We have already been using the DataView class implicitly. The DataSet class itself does not implement all the binding interfaces discussed earlier—it defers to the DataView. If you call the GetType method on the List property of a CurrencyManager for a DataSet, you will see that its type is not DataSet or DataTable; it is DataView.

The DataSet provides a default view for each of its tables, and this is the view to which controls will normally bind. We can modify the default view’s properties, as Example 10-37 shows.

Example 10-37. Changing the sort order of the default view

// C# code

ds.Tables["Orders"].DefaultView.Sort = "ShippedDate";



' VB code

ds.Tables("Orders").DefaultView.Sort = "ShippedDate"

This modifies the default DataView for the Orders table, causing it to display the contents sorted by their ShippedDate column. The DataView class also provides a RowFilter property, allowing the view to filter out rows according to the specified criteria, as ...

Get .NET Windows Forms in a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.