2009-10-19 5 views
3

Я пишу программу в VB.Net для управления текстовыми сообщениями, отправленными через API. Он позволяет просматривать сообщения в datagridview и фильтровать по дате, отправляться/не отправлять и т.д. ...Сообщайте пользователям, что DataGridView заполняется

Чтобы загрузить сообщения, я выполняю инструкцию SQL и получаю DataTable, который затем устанавливается как DataSource для моего DataGridView контроль.

Проблема в том, что в зависимости от выбранных фильтров пользователь может выбирать множество записей, и для обновления данных потребуется некоторое время. Я хочу сообщить пользователю об этом времени загрузки, указав индикатор выполнения или ярлык какого-либо типа.

Я использовал индикаторы выполнения до того, как перебираю данные, но это загружает все сразу. Я думал о отображении метки, когда пользователь нажимает на загрузку данных, а затем скрывает их при загрузке данных. Но это происходит мгновенно, даже когда данные все еще загружаются.

Есть ли событие в DataGridView, которое я могу использовать, возможно? Что-то вроде .DataSourceLoadStart и .DataSourceLoadFinished.

Я знаю, что я просто делаю эти события ... но, надеюсь, он разъясняет, чего я хочу.

ответ

3

Вы можете установить ярлык, который будет отображаться при нажатии на загрузку, и попробовать следующее: DataGridView.DataBindingComplete Event, чтобы скрыть его, это событие вызывается, когда привязка завершена.

MSDN Link - DataBindingComplete

+0

Это делает то, что нужно. Я думаю, что проблема заключается в том, чтобы сделать ярлык видимым при нажатии кнопки загрузки. На данный момент это происходит ... нажмите> показать ярлык загрузки> загружать сообщения> завершение привязки данных (скрыть сообщение снова) Но ярлык не будет отображаться во время загрузки данных. Он показывает метку после заполнения DataGridView и затем снова скрывает ее. Несмотря на то, что мой код выглядит следующим образом:

 lblLoading.visible = true LoadMessages() 
Значит, он должен сначала показывать этикетку ... ??? – Banford

+1

Add: Application.DoEvents() после вызова, чтобы показать метку, таким образом он будет расставлять приоритеты показа этикетки перед ее отключением для загрузки сообщений – Tanner

+0

Ссылка MSDN: Doevents(): http://msdn.microsoft. com/en-us/library/system.windows.forms.application.doevents.aspx – Tanner

0

Немного не по теме, но ... Интересно, если бы вы могли прикрепить панель обновления AJAX with activity/loading image в GridView? Я не думаю, что я когда-либо видел это, но вот отличное приложение для него.

+0

Я бы и раньше использовал этот метод для достижения аналогичных результатов. Но это для настольного приложения, извините, если я этого не сделаю. – Banford

Смежные вопросы