Как предотвратить изменение selectedValue при вызове метода tableAdapter Fill()?

Я привязал свой ListBox к некоторым данным.

Проблема в том, что когда я вызываю метод myTableAdapter.Fill(..), SelectedValue изменяется на любой идентификатор первого элемента в списке. Хотя "Выбранное значение" в VS не привязано нигде (см. Изображение). http://img370.imageshack.us/img370/2548/ss20090108212745qz2.png

Как мне предотвратить это поведение, пожалуйста?

Большое спасибо за помощь.

2 ответа

Решение

Вы не должны быть обязательными для каждого запроса. Если по какой-либо причине вам абсолютно необходимо выполнять привязку к каждому запросу, вам нужно установить SelectedIndex в ListBox вручную. Это связано с тем, что метод Fill сначала очищает список, а затем создает новые элементы списка для извлеченных данных.

Самый простой способ, который я могу придумать, - это изменить код заполнения адаптера таблицы примерно так:

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

Вы столкнетесь с проблемой, если элемент больше не существует, поэтому вы можете добавить условие, чтобы проверить это.

Другие вопросы по тегам