7.2. Binding Complex Data to Web Forms Controls

Problem

You want to bind multiple columns in multiple records to an ASP.NET control.

Solution

Set the control’s advanced properties (see Table 7-1) before calling DataBind( ).

The Web Forms page sample code defines the ListBox that is populated with data by the code-behind page logic. The code for the Web Forms page is shown in Example 7-3.

Example 7-3. File: ADOCookbookCS0702.aspx

<asp:ListBox id="categoriesListBox" style="Z-INDEX: 102; LEFT: 88px;
    POSITION: absolute; TOP: 64px" runat="server" Width="184px"
    Height="216px">
</asp:ListBox>

The code-behind contains one event handler:

Page.Load

Fills a DataTable with the CategoryID and CategoryName from the Categories table in the Northwind sample database. The ListBox server control is bound to the DataTable.

The C# code for the code-behind is shown in Example 7-4.

Example 7-4. File: ADOCookbookCS0702.aspx.cs

// Namespaces, variables, and constants using System; using System.Configuration; using System.Data; using System.Data.SqlClient; // . . . private void Page_Load(object sender, System.EventArgs e) { // Create a DataAdapter and use it to retrieve ID and Name // for all categories. String sqlText = "SELECT CategoryID, CategoryName FROM Categories " + "ORDER BY CategoryName"; SqlDataAdapter da = new SqlDataAdapter(sqlText, ConfigurationSettings.AppSettings["DataConnectString"]); DataTable table = new DataTable("Categories"); da.Fill(table); // Bind the table to the list box control. categoriesListBox.DataSource ...

Get ADO.NET Cookbook 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.