A: 

Does the data need to be in a DataTable? Using a SortedList and binding that to a combo box would be a simpler way.

If you need to use a DataTable you can use the Select method to retrieve a DataView and pass in a sort parameter.

DataView dv = myDataTable.Select("filter expression", "sort");
Andy Rose
+1  A: 

You can actually sort the default view on a DataTable:

myDataTable.DefaultView.Sort = "Field1, Field2 DESC";

That'll sort any rows you retrieve directly from the DataTable.

Matt Hamilton
+5  A: 

If you're using a DataTable, you can use the (DataTable.DefaultView) DataView.Sort property. For greater flexibility you can use the BindingSource component. BindingSource will be the DataSource of your combobox. Then you can change your data source from a DataTable to List without changing the DataSource of the combobox.

The BindingSource component serves many purposes. First, it simplifies binding controls on a form to data by providing currency management, change notification, and other services between Windows Forms controls and data sources.

John
A: 
urini
+1  A: 

Make sure you bind the DefaultView to the Controls Datasource, after you set the Sort property, and not the table:

myCombo.DataSource = this.typedDataSet.Tables["Table1"].DefaultView;
myCombo.DisplayMember = "ColumnB";
myCombo.ValueMember = "ColumnA";
Andy Rose
A: 

I realize that you've already chosen your answer to this question, but I would have suggested placing a DataView on your form, binding it to your DataSet/DataTable, and setting the sort on the View in the designer. You then bind your combobox to the DataView, rather than the DataSet/DataTable.

Adam Robinson
A: 

Josh Smith has a blog post that answers this question, and does it all in XAML.

David Veeneman