Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
1 / 3 / 1
Регистрация: 07.03.2017
Сообщений: 21
1

Отрисовка грида в виртуальном режиме

13.06.2011, 11:22. Показов 2179. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток уважаемые.
Пишу проект на VB.NET. Мне необходимо отобразить выборку склада производственного предприятия из БД за год. Все бы ничего, да вот только записей при этом выводится около 50 000. При отрисовки гридом набора записей, соответственно, начинаются жуткие тормоза. Таблицу заполняю следующим кодом:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        'Настройка грида
        DataGridView1.ReadOnly = True
        DataGridView1.AllowUserToAddRows = False
        DataGridView1.AllowUserToDeleteRows = False
        DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader
        DataGridView1.MultiSelect = False
 
        'Создание подключения
        Dim strCon As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\NWind.mdb;"
        Dim cn As New System.Data.OleDb.OleDbConnection(strCon)
        'Создание объекта Command
        Dim strSQL As String = "SELECT * FROM vw_Izd"
        Dim cmdDocuments As New System.Data.OleDb.OleDbCommand(strSQL, cn)
 
        'Выполнение запроса
        Dim Reader As System.Data.OleDb.OleDbDataReader
        cn.Open()
        Reader = cmdDocuments.ExecuteReader()
Тормозит отрисовка грида здесь:

VB.NET
1
2
3
4
5
        'Отрисовка данных в гриде
        Dim tbl As New DataTable("Table")
        tbl.Load(Reader)
        cn.Close()
        DataGridView1.DataSource = tbl
В статье
http://www.rsdn.ru/article/dot... View20.xml
Упоминается, что DataGridView может использоваться в виртуальном режиме. При этом данные из БД будут подтягиваться по мере необходимости, не загружая ресурсов. Много гуглил, так и не смог реализовать данный механизм.
Уважаемые, помогите плиз реализовать сей механизм, либо еще какой, чтобы данные выводились быстро. Ведь в VB6.0 такой проблемы не было.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2011, 11:22
Ответы с готовыми решениями:

Asm x32 Сегментно-страничная адресация в виртуальном режиме
Доброго времени суток! Проблема заключается в диком недопонимании алгоритма переобразования адреса...

Почему ListView в виртуальном режиме выдает исключение когда окно свернуто
Здравствуйте, из темы понятно в чем проблема. Когда окно с листом свернуто, и я пытаюсь обновить...

Как получить данные из элемента ListView, если он находится в виртуальном режиме
Здравствуйте. Перевел LIst View в виртуальный режим и все таки наткнулся я на неразришимую...

Имитация работы часов с часовой, минутной и секундной стрелкой в виртуальном режиме времени
Здравствуйте. У меня имеется вот такое задание: Составить программу, имитирующую работу часов с...

2
195 / 187 / 15
Регистрация: 09.02.2011
Сообщений: 457
14.06.2011, 23:14 2
VB.NET
1
DataGridView1.VirtualMode = True
Означает только то, что DataGridView не будет автоматически обработать заполнение, изменение и удаление ячеек...

1. Выводите данные постранично.

2. Проверьте что именно тормозит вывод или запрос и получение данных из БД.
У меня Ваш код отрабатывает (>100000 записей с полями мемо):
запрос за 4671.875 мс
отрисовка за 687.5 мс
0
1 / 3 / 1
Регистрация: 07.03.2017
Сообщений: 21
15.06.2011, 09:03 3
Цитата Сообщение от Bazzy Посмотреть сообщение
VB.NET
1
DataGridView1.VirtualMode = True
Означает только то, что DataGridView не будет автоматически обработать заполнение, изменение и удаление ячеек...

1. Выводите данные постранично.

2. Проверьте что именно тормозит вывод или запрос и получение данных из БД.
У меня Ваш код отрабатывает (>100000 записей с полями мемо):
запрос за 4671.875 мс
отрисовка за 687.5 мс
Спасибо Bazzy за помощь.
1. А как вывести данные постранично? Я читал, что при
VB.NET
1
DataGridView1.VirtualMode = True
грид периодически, во время прокрутки, обращается к БД за данными. Видимо ошибался.
2. Тормозит отрисовка в гриде, здесь:
VB.NET
1
DataGridView1.DataSource = tbl
У Вас, видимо компьютер более мощный. У меня даже после загрузки и отображения всех строк гридом, при нажатии на сортировку, грид выполняет действие секунд через 5-7.
0
15.06.2011, 09:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2011, 09:03
Помогаю со студенческими работами здесь

Медленная отрисовка в режиме GL_SELECT
Здравствуйте! Я пытаюсь использовать GL_SELECT для выделения объектов на экране. В общем то всё...

По значению из столбца 1 дата грида 1 забрать значения из 2 столбца 2 дата грида
Доброго времени суток. Суть задачи такова: Нужно взять значение из 8-го столбца первого дата...

О виртуальном наследовании
Хотелось бы с Вашей помощью разобраться в деталях виртуального наследования. Вопрос такой: что на...

кракозябы в виртуальном приводе
подскажите в чем проблема? винда 10 была на русском языке, сейчас стоит итальянский. проблема в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru