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