Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: ComboBox и изменение содержания его DataSet-a Добавлено: 26.06.06 12:46  

Автор вопроса:  Lola
Есть три комбобокса, которые служат фильтрами для формы (т.е. грида на ней). Выбирая значение в одном сомбобоксе отфильтровываются датасеты и в двух других.
Я это делаю обычным способом для датасета:
ds1.clear
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-сайт: 4elovekssn.blog.ru
 Профиль | | #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-сайт: 4elovekssn.blog.ru
 Профиль | | #5
Добавлено: 27.06.06 14:25
На втором посте я уже запутался. Можно побольше кода?

Ответить

Номер ответа: 6
Автор ответа:
 Lola



Вопросов: 2
Ответов: 9
 Профиль | | #6 Добавлено: 28.06.06 10:39
Всё уже окей.
Тут в двух словах не объяснить (попробовала, но еще больше запутала бы) :)
Прикол состоял в том, что оказывается при обновлении содержимого датасета (и при очистке, и при заполнении), срабатывает событие SelectedIndexChanged. А у меня три комбобокса, в каждом есть процедура SelectedIndexChanged, а вней заполняются датасеты других двух комбобоксов. И тут то собака и порылась. Получился порочный круг. Один SelectedIndexChanged заставляет срабатывать другой SelectedIndexChanged, а тот, в свою очередь первый, и при этом значение первого комбобокса уже становится дефолтовым и все начинается по новой, но уже с дефолтовым значением. Поэтому и подвисало.
Я поставила в процедуры SelectedIndexChanged признак, чтоб срабатывал код только в случае, если было событие Enter.
Что-нибудь стало понятнее? :))))))
Главное, теперь работает!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам