DataView Class

The DataView class in ADO.NET provides a way to create a custom view of a DataTable. It allows you to filter, sort, and navigate through the rows of a DataTable without modifying the original data. This is particularly useful for data-bound controls that need to display specific subsets or sorted orders of data.

Overview

A DataView is a dynamic view of the data contained in a DataTable. Changes made to the underlying DataTable are immediately reflected in the DataView, and vice-versa, allowing for real-time data manipulation.

Key features of DataView include:

Creating a DataView

To create a DataView, you instantiate the DataView class, passing the DataTable you want to view as a constructor argument.


// Assume 'myDataTable' is an existing DataTable object
DataView myDataView = new DataView(myDataTable);
            

Filtering Data

The RowFilter property is used to specify a filter expression. The expression syntax is similar to the `WHERE` clause in SQL.


// Filter to show only rows where 'City' is 'London'
myDataView.RowFilter = "City = 'London'";

// Filter to show rows where 'Age' is greater than 30
myDataView.RowFilter = "Age > 30";

// Filter with multiple conditions
myDataView.RowFilter = "Country = 'USA' AND Age > 25";
            

Sorting Data

The Sort property is used to specify the sorting order. The expression syntax is similar to the `ORDER BY` clause in SQL.


// Sort by 'LastName' in ascending order
myDataView.Sort = "LastName ASC";

// Sort by 'Age' in descending order
myDataView.Sort = "Age DESC";

// Sort by multiple columns
myDataView.Sort = "Country ASC, City DESC";
            

Row State Filtering

The RowStateFilter property allows you to specify which versions of rows to display.


// Show only the original rows
myDataView.RowStateFilter = DataViewRowState.OriginalRows;
            

Data Binding Example

Here's a simple example of how you might bind a DataView to a DataGridView in a Windows Forms application.

C# Example:

// Assuming you have a DataGridView named 'dataGridView1'
// and a DataTable named 'customersTable' populated with data

DataView customerView = new DataView(customersTable);
customerView.RowFilter = "Country = 'UK'";
customerView.Sort = "CompanyName ASC";

dataGridView1.DataSource = customerView;
                

Properties Summary

Property Description
AllowDelete Gets or sets a value indicating whether rows can be deleted through the DataView.
AllowNew Gets or sets a value indicating whether new rows can be added through the DataView.
AllowEdit Gets or sets a value indicating whether rows can be edited through the DataView.
Table Gets the DataTable associated with this DataView.
RowFilter Gets or sets the filter expression used to filter the rows.
Sort Gets or sets the sort expression used to sort the rows.
RowStateFilter Gets or sets the filter for row states.
Count Gets the number of rows in the DataView after filtering and sorting.

Note: When modifying data through a DataView, be mindful of the AllowEdit, AllowNew, and AllowDelete properties. Ensure they are set appropriately for your application's requirements.

See Also