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.11. Getting Typed DataRows from DataViews

Problem

When using a DataView to find rows in a typed DataSet, you want to convert the rows you find to typed DataRow objects having all the properties and methods defined in your typed DataSet.

Solution

Cast the DataRow object returned by the Row property of a DataRowView to a typed DataRow.

The sample code contains two event handlers:

Form.Load

Sets up the sample by creating a typed DataSet containing the Categories table from the Northwind sample database. The default view of the typed Categories table sorted by the CategoryID is bound to the data grid on the form.

Find Button.Click

Finds the row in the view matching the user specified CategoryID, gets the underlying table row, and casts that to the typed row.

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

Example 3-11. File: TypedDataRowFromDataViewForm.cs

// Namespaces, variables, and constants using System; using System.Configuration; using System.Windows.Forms; using System.Text; using System.Data; using System.Data.SqlClient; private DataView dv; // Table name constants private const String CATEGORIES_TABLE = "Categories"; // . . . private void TypedDataRowFromDataViewForm_Load(object sender, System.EventArgs e) { // Create the typed DataSet. CategoriesDS dsTyped = new CategoriesDS( ); // Create and fill the Categories table. String sqlText = "SELECT CategoryID, CategoryName, Description FROM Categories"; SqlDataAdapter da = new SqlDataAdapter(sqlText, ConfigurationSettings.AppSettings["Sql_ConnectString"]); ...

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