DataViews
The DataView
class in ADO.NET provides a way to sort and filter DataTable
data. It acts as a programmable view of the data in a DataTable
, allowing you to present the data in different ways without modifying the underlying DataTable
itself.
Key Features of DataView
- Sorting: You can sort the data in a
DataView
based on one or more columns. - Filtering: You can filter the data to display only rows that meet specific criteria.
- Dynamic Updates: A
DataView
automatically reflects changes made to the underlyingDataTable
. - Row State Filtering: You can filter based on the current state of rows (e.g., Added, Modified, Deleted, Unchanged).
- Data Binding:
DataView
objects are commonly used for data binding to UI controls like grids.
Creating and Using a DataView
To create a DataView
, you instantiate the DataView
class and pass the DataTable
you want to view to its constructor. You can then set properties like Sort
and RowFilter
to configure the view.
Example: Sorting and Filtering
Let's assume you have a DataTable
named productsTable
with columns like ProductID
, ProductName
, and UnitPrice
.
// Assume productsTable is already populated with data
// Create a DataView from the DataTable
DataView dataView = new DataView(productsTable);
// Sort the DataView by ProductName in ascending order
dataView.Sort = "ProductName ASC";
// Filter the DataView to show products with UnitPrice greater than 50
dataView.RowFilter = "UnitPrice > 50";
// Now, iterate through the filtered and sorted data
foreach (DataRowView rowView in dataView)
{
Console.WriteLine($"Product: {rowView["ProductName"]}, Price: {rowView["UnitPrice"]}");
}
Key Properties
RowFilter
: A string expression used to filter rows. The syntax is similar to theWHERE
clause in SQL.Sort
: A string expression used to sort rows. The syntax is similar to theORDER BY
clause in SQL.DataViewManager
: Gets or sets theDataViewManager
associated with thisDataView
.Table
: Gets theDataTable
that thisDataView
is based on.AllowNew
: Gets or sets a value indicating whether new rows can be added through thisDataView
.AllowEdit
: Gets or sets a value indicating whether existing rows can be edited through thisDataView
.AllowDelete
: Gets or sets a value indicating whether rows can be deleted through thisDataView
.
RowFilter Syntax
The RowFilter
property uses an expression language to define filtering criteria. Here are some examples:
"City = 'London'"
: Selects rows where the City column is 'London'."Age > 30"
: Selects rows where the Age column is greater than 30."LastName LIKE 'S%'"
: Selects rows where the LastName starts with 'S'."OrderDate BETWEEN '2023-01-01' AND '2023-12-31'"
: Selects rows within a date range."AND"
and"OR"
operators can be used to combine conditions.
Sort Syntax
The Sort
property uses an expression language to define sorting order. Here are some examples:
"ProductName ASC"
: Sorts by ProductName in ascending order."UnitPrice DESC"
: Sorts by UnitPrice in descending order."Category ASC, UnitPrice DESC"
: Sorts by Category ascending, then by UnitPrice descending for rows with the same category.
Note on DataViewManager
The DataViewManager
class is used to create DataView
objects that can be bound to data-bound controls. It manages the creation of DataView
objects for different DataTable
objects within a DataSet
.
Conclusion
DataView
is a powerful tool for manipulating and presenting data from a DataTable
in ADO.NET. Its ability to sort, filter, and reflect changes dynamically makes it indispensable for data-driven applications.