.NET 2.x Прокрутка данных в DataGridView с поблочной загрузкой - Visual Basic .NET
Формулировка задачи:
День добрый,
возникла необходимость перелистывания таблицы данных (из БД) в Datagridview, т.е. сначала отображаются первые 20 записей, потом следующие 20 и т.д.
В данный момент использую тяжеловесную конструкцию, которая тормозит всю форму. Определяю на сколько страниц разбить все данные по 20 записей. Определяю текущую, передаю номера записей для выборки в запрос, выполняю запрос, заполняю датагрид. Все происходит по таймеру:
Думаю что можно после получения всех данных (выполнение запроса один раз) просто отрисовывать датагрид с нужными записями в таймере. Если я прав, то подскажите как это реализовать или есть какие другие варианты для поставленной задачи.
Листинг программы
- Dim OleReader As OleDb.OleDbDataReader
- Dim OM As New DataTable
- OM.Clear()
- Dim loadinfo As New OleDb.OleDbCommand
- loadinfo = New OleDb.OleDbCommand("SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY ФИО) [№],tbl.* FROM [SUP_120].[dbo].[osd_cur_month_cardsum_all] as tbl) seq WHERE seq.[№] BETWEEN " & r1 & " AND " & r2 & "", Dbcon)
- loadinfo.CommandType = CommandType.Text
- loadinfo.CommandTimeout = 9999
- Try
- OleReader = loadinfo.ExecuteReader
- OM.Load(OleReader)
- DGV_osd.DataSource = OM
Листинг программы
- If curpage = 0 Then
- r1 = 1
- r2 = 21
- curpage += 1
- load_osd_month()
- ElseIf curpage <= (pages - 1) Then
- r1 += 21
- r2 += 21
- curpage += 1
- load_osd_month() ###### функция куда передаются параметры для запроса
- Else
Решение задачи: «.NET 2.x Прокрутка данных в DataGridView с поблочной загрузкой»
textual
Листинг программы
- DataGridView2.DataSource = tb2
- For t = 0 To tb2.Rows.Count - 1 Step 20
- DataGridView2.FirstDisplayedCell = DataGridView2.Rows(t).Cells(0)
- Application.DoEvents()
- Threading.Thread.Sleep(300)
- Next
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д