Binding Data

Rather than iterating through the table and loading each record individually, you can bind the ListBox control to the database table. In general, data binding lets you create a relationship between a control (such as a ListBox) and a source of data (such as a DataSet whose backing store is SQL Server).

Virtually any object can act as a data source, including such simple sources as properties, expressions, or the result of a method call, and such complex sources as arrays, collections, and DataSets. For controls that display a collection, such as a listbox or a DataGrid, you must bind to a source that implements one of the binding interfaces such as ICollection, IBindingList, or IListSource. This allows the control to iterate over the collection and display each member in turn.

For example, you can modify the previous examples to remove the foreach loop:

image with no caption

// for each row in the table, display the info
foreach (DataRow dataRow in dataTable.Rows)
{
   lbBugs.Items.Add(
      dataRow["BugID"] + 
      ": " + dataRow["Description"]  );
}

and replace it with these two statements:

image with no caption

lbBugs.DataSource= dataTable;
lbBugs.DisplayMember = "Description";

The first statement instructs the control to bind to a dataTable and populate itself based on that table's data. The second sets the DisplayMember property, ...

Get Programming .NET Windows Applications 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.