How do I bind the result of DataTable.Select() to a ListBox control?

Andrew picture Andrew · Sep 22, 2008 · Viewed 31.1k times · Source

I have the following code:

ListBox.DataSource = DataSet.Tables("table_name").Select("some_criteria = match")
ListBox.DisplayMember = "name"

The DataTable.Select() method returns an array of System.Data.DataRow objects.

No matter what I specify in the ListBox.DisplayMember property, all I see is the ListBox with the correct number of items all showing as System.Data.DataRow instead of the value I want which is in the "name" column!

Is it possible to bind to the resulting array from DataTable.Select(), instead of looping through it and adding each one to the ListBox?

(I've no problem with looping, but doesn't seem an elegant ending!)

Answer

Josh picture Josh · Sep 22, 2008

Use a DataView instead.

ListBox.DataSource = new DataView(DataSet.Tables("table_name"), "some_criteria = match", "name", DataViewRowState.CurrentRows);
ListBox.DisplayMember = "name"