Home > Articles > Programming > Windows Programming

Data Binding on Web Forms

Although you can write all the code necessary to open a data source, retrieve the data, and fill in controls on an ASPX page, you needn't do this. Web Forms can use ADO.NET under the covers to handle all the "plumbing" for you. In this sample chapter by Paul Sheriff and Ken Getz, you get a good start working with data and data binding in ASP.NET.
This article is excerpted from ASP.NET Developer's JumpStart, by Paul Sheriff and Ken Getz (Addison-Wesley, 2002, ISBN: 0672323575).
This chapter is from the book

This chapter is from the book

Although you could write all the code necessary to open a data source, retrieve the data, and fill in controls on an ASPX page, you needn't do this. Web Forms can use ADO.NET under the covers to handle all the "plumbing" for you. Using data binding, you do not need to explicitly write the code that instantiates a connection and creates a DataSet (as you would if you were creating an unbound form). Visual Studio .NET includes tools to create the necessary Connection and Command objects for you, and ASP.NET controls include code that allows them to bind to these data objects with very little code. Web Forms allow you to bind easily to almost any structure that contains data. You can bind Web Forms to traditional data stores, such as data stored in a Microsoft SQL Server or Oracle database, or you can bind to the result of data read from text files, data within other controls, or data stored in an array. In this article, you will learn to bind to a SQL Server table.

You're most likely going to want to be able to bind the DataGrid, ListBox, and DropDownList controls to data sources. We'll focus on these controls, then, in this article, and show how you can display data from a SQL Server table in each of these controls.

Creating a Sample Page

The simplest way to get started with data binding is to display the contents of a single table in a DataGrid control. As you'll see, this requires very little effort on your part, at least, if your only goal is to simply display the data.

To get started, in this section you'll walk through building the sample page shown in Figure 1.

Figure 1 You'll build this page in the first part of this article.

The example involves these basic steps (all described in detail in the following sections):

  1. Building a Web Form.

  2. Creating and configuring the DataSet to which you wish to bind a control on the form.

  3. Adding a DataGrid control to the page.

  4. Binding the DataGrid control to the data source.

Before digging into the details of setting up the bound DataGrid control, you'll need to add a new page to your project. Follow these steps to add the new page:

  1. Select Project, Add Web Form from the menu bar.

  2. Set the name of this form to Products.aspx.

  3. Click Open to add this new Web Form to your project.

Creating and Configuring a DataSet

Once you've created the Products page, you're ready to create and configure the DataSet you'll use on this page. In this example, you'll retrieve data from the Products table that's part of SQL Server's Northwind sample database. Because a DataSet is an in-memory cache consisting of tables, relations, and constraints, it acts as an "in-memory" database, and you'll bind controls on your page to DataSet objects. You need to start by filling a DataSet using a DataAdapter object.


Although we had a choice, when designing the examples in this article of using either the System.Data.OleDb or System.Data.SqlClient namespaces, we opted for the OleDb namespace because of its flexibility. That is, had we chosen the SqlClient namespace, and then you decided to modify the examples to work with a DB2 database back end, you would have to modify every object in every example. Using the OleDb namespace, all you need to do is modify the connection information and field names. It was a difficult choice, and if you're only working with SQL Server 7.0 or higher, it's not the correct one for you. Note that we'll often refer to namespace-specific objects (such as the OleDbDataAdapter object) using namespace-agnostic names, such as DataAdapter. There isn't a DataAdapter object out there, but referring to it generically sure beats saying OleDbDataAdapter or SqlDataAdapter each time! If you have time, it would be a worthwhile exercise to try repeating the page created in this article using the SqlClient namespace. The issues aren't very different, and you should be able to take the same steps using the different namespace.

Using the Data Adapter Configuration Wizard

The first step in retrieving data is to create a Connection object that contains information on the location and type of your data source. Although you can write code to handle this task, for the purposes of this article, you'll use the user-interface tools provided by Visual Studio .NET to create the necessary connection. To do that, you'll use the OleDbDataAdapter component on the Data tab of the Toolbox. Once you've placed this component on your page, Visual Studio .NET walks you through the steps of supplying connection information and building a SELECT command to retrieve the data you need. Once you've built the DataAdapter, you'll still need to write a tiny bit of code to fill a DataSet and bind a grid to the DataSet.


You could write code that solves all the tasks in this article. To keep things simple, however, in this first exploration of ADO.NET, we've elected to use the tools provided by Visual Studio .NET. That way, you don't need to write much code.

Follow these steps to set up the OleDbDataAdapter object on your new page:

  1. Make sure the Toolbox window is visible (select View, Toolbox, if it's not).

  2. Select the Data tab on the Toolbox window.

  3. Click and drag the OleDbDataAdapter component onto your page. This starts the Data Adapter Configuration Wizard.

  4. The first page of the wizard, shown in Figure 2, gives you basic information. Select Next to move on.

    Figure 2 The first page of the Data Adapter Configuration Wizard gives you basic information about what's going to happen.

  5. On the Choose Your Data Connection page, shown in Figure 3, you have the option to use an existing connection or to create a new one. Because you're unlikely to have an existing connection at this point, select New Connection to create a new one. (Even if you have existing connections, follow along with creating a new one, for now.)

    Figure 3 Choose your data connection.

  6. Clicking New Connection brings up the Data Link Properties dialog box. (This should be a familiar sight to anyone who has used ADO and OLE DB in the past.) Assuming that you can use the Northwind SQL Server sample database on your local computer, log in as "sa" with no password (not a good idea, in general) and fill in the dialog box as shown in Figure 4. Click OK when you're done to dismiss the dialog box; then click Next to move to the next page.

    Figure 4 Supply data link properties.


    If you can't connect to the Northwind SQL Server sample database, you may need to talk with a network administrator, who can supply information about how to connect to the sample database.

  7. The Choose a Query Type page, shown in Figure 5, allows you to designate the type of query you want to use when the DataAdapter fills a DataSet. Select Use SQL Statements (in order to have the wizard create local SQL statements, as opposed to using existing or new stored procedures), and click Next.

    Figure 5 Designate the type of query the wizard should use.

  8. On the Generate the SQL Statements page, you must either enter a SQL statement manually or click Query Builder to use a visual tool to create the query. In this simple example, it's easy enough to simply type in the required SQL. Enter the following text into the text box, so that the page looks like Figure 6:

    SELECT CategoryID, SupplierID, ProductID, ProductName,
    UnitPrice, UnitsInStock
    FROM Products

    Figure 6 Enter a SQL expression to be used by the DataAdapter.

  9. Click Next to proceed to the final page. Then click Finish to complete the process. Notice that OleDbConnection and OleDbDataAdapter objects named OleDbConnection1 and OleDbDataAdapter1 appear in the tray area of the form.

  10. Select OleDbConnection1 and, in the Properties window, set the Name property to cnNorthwind.

  11. Select OleDbDataAdapter1 and, in the Properties window, set the Name property to daProducts.

At this point, the cnNorthwind object contains information about how to access the selected database. The daProducts object contains a query defining the tables and columns in the database that you want to access. You'll use both those objects in order to retrieve the data you need.


If you'd rather use the slightly more efficient SqlClient namespace objects, you can follow the same steps listed here, using the SqlConnection and SqlDataAdapter objects. The steps are identical, although you may need to modify the code later on in order to complete the article.

Retrieving Data

You can't bind controls to a DataAdapter object because a DataAdapter object doesn't contain any data—you need a DataSet to bind data to controls. At this point, you have two choices: You can have Visual Studio .NET generate a typed DataSet for you, or you can write code to create a standard DataSet yourself. For the purposes of this article, it doesn't matter which technique you choose—the code you have to write is similar in either case. If you're going to interact programmatically with the DataSet or want the extra functionality provided by the typed DataSet, you might go that route. If you simply want to get the DataGrid filled with data, you might want to create the DataSet yourself. In this section, we'll use a typed DataSet. When it comes time to bind a DropDownList control, you'll write all the code yourself—that is, bind to data without using the design-time components provided by Visual Studio .NET.

Using a Typed DataSet

In order to generate the typed DataSet, follow these steps:

  1. Select Data, Generate DataSet to display the Generate DataSet dialog box.

  2. Select the New radio button. Next to the New radio button, enter dsProducts as the name for your DataSet, as shown in Figure 7.

    Figure 7 The Generate DataSet dialog box allows you to specify the name for the DataSet you're generating.

  3. Click OK to dismiss the dialog box and generate the DataSet schema definition and class files.

  4. After this step completes, you will see a new component, DsProducts1, in the tray area for the page. This new component represents the schema definition file, dsProducts.xsd, that Visual Studio .NET added to your project. This file contains the complete definition for the table and columns of the SQL statement you entered earlier, described as an XML Schema Definition (or XSD) file. Visual Studio .NET also provides a code-behind file for this schema. You won't see the code-behind file unless you select Project, Show All Files.

  5. Once you've shown all files, you can expand the dsProducts.xsd node to see the dsProducts.vb file, as shown in Figure 8. The dsProducts.vb file contains a class that "wraps up" the behavior of the DataSet, providing an object that inherits from the standard DataSet class, adding properties that map to the columns from the underlying table and methods that allow you to work with the data.

Figure 8 An XML Schema Definition (XSD) file has a class module that contains the code that loads the DataSet into memory.


You won't use any of the features of the typed DataSet in this article, although it's nice to know how easy it is to create the class, should you ever need the functionality.

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020