O'Reilly logo

ADO.NET Cookbook by Bill Hamilton

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

3.2. Using Expression Columns to Display Calculated Values

Problem

You need to display a calculated value for each row in a DataTable and to filter and sort the table on this value.

Solution

Add an expression column to the table and display it. Sort and filter on the expression column from the default DataView for the table.

The sample code contains two event handlers:

Form.Load

Sets up the sample by creating a DataTable containing the Order Details table from the Northwind sample database. An expression column calculating the extended price for each detail line is created and added to the table. Finally, the default view for the table is bound to the data grid on the form.

Apply Button.Click

Applies the filter and sort order entered by the user to the Extended Price expression column in the data view.

The C# code is shown in Example 3-2.

Example 3-2. File: ExpressionColumnForm.cs

// Namespaces, variables, and constants using System; using System.Configuration; using System.Windows.Forms; using System.Data; using System.Data.SqlClient; // . . . private void ExpressionColumnForm_Load(object sender, System.EventArgs e) { // Define the table and fill it with data. DataTable dt = new DataTable("OrderDetails"); String selectText = "SELECT * FROM [Order Details]"; SqlDataAdapter da = new SqlDataAdapter(selectText, ConfigurationSettings.AppSettings["Sql_ConnectString"]); da.Fill(dt); // Add an expression column to the table. dt.Columns.Add(new DataColumn("ExtendedPrice", typeof(Decimal), "(Quantity ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required