+1  A: 

You shouldn't be binding on each request. If you absolutely have to bind on each request for some reason you have to set SelectedIndex on the ListBox manually. This is because the Fill method first clears the list then creates new list items for the fetched data.

JohannesH
+1  A: 

The simplest way I can think of is to change your table adapter fill code to something like this:

string preSelected = myDropDownList.SelectedValue;
myTableAdapter.Fill(myDataTable);
myDropDownList.SelectedValue = preSelected;

You will run into an issue if the item doesn't exist anymore, so you may want to add a condition to check for that.

Andrew Koester