Страница: 1 |
Страница: 1 |
Вопрос: ComboBox и изменение содержания его DataSet-a
Добавлено: 26.06.06 12:46
Автор вопроса: Lola
Есть три комбобокса, которые служат фильтрами для формы (т.е. грида на ней). Выбирая значение в одном сомбобоксе отфильтровываются датасеты и в двух других.
Я это делаю обычным способом для датасета:
Adapter.SelectCommand.CommandText = "SELECT... WHERE..."
Adapt.Fill(ds1)
Проблема в том, что после этого сомбобох принимает значение первой записи своего нового набора.
1. Как сделать, чтобы при изменении датасета комбобокса, значение ComboBox.Text не менялось?
2. Можно ли у комбобокса отследить событие DropUp?
Спасибо.
Дополнительный вопрос: ds1.clear почему-то именно в этой процедуре подвисает, хотя количество записей не очень-то большое (около 800), и в других случаях другой датасет из этой таблицы отрабатывает не больше чем за 1 сек, а здесь и минуту может провисеть, а потом отработать. С чем это может быть связано?
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Calhoon
ICQ: 789764
Вопросов: 90
Ответов: 230
Web-сайт:
Профиль | | #1
Добавлено: 26.06.06 13:34
1. Просто перед изменением запомни значение ComboBox.Text, а после - поставь заново ComboBox.Text = "текст"
Номер ответа: 2
Автор ответа:
Lola
Вопросов: 2
Ответов: 9
Профиль | | #2
Добавлено: 26.06.06 14:33
Я так пробовала...
Проблема у меня в том, что заполнение любого из трех датасетов влечет за собой событие SelectedIndexChanged того ComboBox-а, в котором выбираем значение. Почему? Я бы отказалась от этого события, но как еще отследить с минимальным количеством кликов изменение в комбобоксе?
Может я вообще в принципе неправильно подошла к решению?
Может надо какие-то другие события использовать?
Номер ответа: 3
Автор ответа:
Lola
Вопросов: 2
Ответов: 9
Профиль | | #3
Добавлено: 26.06.06 14:44
P.S. И не только срабатывает событие SelectedIndexChanged выбранного ComboBox-а, но и двух других...
Номер ответа: 4
Автор ответа:
Lola
Вопросов: 2
Ответов: 9
Профиль | | #4
Добавлено: 26.06.06 15:30
Понаставила признаков во всех SelectedIndexChanged, когда работать, когда не работать. "Здесь - играем, здесь - не играем. А здесь ввобще рыбу заворачивали..."
Номер ответа: 5
Автор ответа:
Calhoon
ICQ: 789764
Вопросов: 90
Ответов: 230
Web-сайт:
Профиль | | #5
Добавлено: 27.06.06 14:25
На втором посте я уже запутался. Можно побольше кода?
Номер ответа: 6
Автор ответа:
Lola
Вопросов: 2
Ответов: 9
Профиль | | #6
Добавлено: 28.06.06 10:39
Всё уже окей.
Тут в двух словах не объяснить (попробовала, но еще больше запутала бы)
Прикол состоял в том, что оказывается при обновлении содержимого датасета (и при очистке, и при заполнении), срабатывает событие SelectedIndexChanged. А у меня три комбобокса, в каждом есть процедура SelectedIndexChanged, а вней заполняются датасеты других двух комбобоксов. И тут то собака и порылась. Получился порочный круг. Один SelectedIndexChanged заставляет срабатывать другой SelectedIndexChanged, а тот, в свою очередь первый, и при этом значение первого комбобокса уже становится дефолтовым и все начинается по новой, но уже с дефолтовым значением. Поэтому и подвисало.
Я поставила в процедуры SelectedIndexChanged признак, чтоб срабатывал код только в случае, если было событие Enter.
Что-нибудь стало понятнее? )))))
Главное, теперь работает!