【发布时间】:2010-10-04 22:02:12
【问题描述】:
我正在使用 DataGridView 从 DataTable 加载数据。此 DataGridView 位于选项卡 (Forms.TabPage) 上。单击此选项卡时,无论是否加载数据,数据网格都需要一两秒钟才能从上到下绘制。
在单击选项卡时,我可以做些什么来加快绘图\渲染速度?
我不认为 DGV 的实际人口是造成这种情况的原因,因为它在表单加载期间被填充,所以当标签点击时它会加载它显示的几行 (20 - 30)。
Using cn As New SqlConnection(connectionString)
Using cmd As SqlCommand = cn.CreateCommand()
cmd.CommandType = System.Data.CommandType.Text
cmd.CommandText = _
" SELECT [finish_time], [file_name], [transfer_status]" & _
" FROM dbo.[transfer_log]"
cmd.Notification = Nothing
cn.Open()
Dim columnSpec = New DataColumn()
With columnSpec
.DataType = GetType(System.String)
.ColumnName = "ClmFinishTime"
End With
Datatable1.Columns.Add(columnSpec)
Dim columnSpec2 = New DataColumn()
With columnSpec2
.DataType = GetType(System.String)
.ColumnName = "ClmFilename"
End With
Datatable1.Columns.Add(columnSpec2)
Dim columnSpec3 = New DataColumn()
With columnSpec3
.DataType = GetType(System.Byte())
.ColumnName = "ClmStatus"
End With
Datatable1.Columns.Add(columnSpec3)
Using dr As SqlDataReader = cmd.ExecuteReader()
While dr.Read()
Dim row As DataRow = Datatable1.NewRow
row("ClmFinishTime") = dr.Item("finish_time")
row("ClmFilename") = dr.Item("file_name")
Select Case dr.Item("transfer_status")
Case 0
row("ClmStatus") = ConvertToByte(My.Resources.accept)
Case 1
row("ClmStatus") = ConvertToByte(My.Resources.remove)
End Select
Datatable1.Rows.Add(row)
End While
End Using
End Using
DataGridView2.AutoGenerateColumns = False
DataGridView2.DataSource = Datatable1
【问题讨论】:
-
如果我注释掉“DataGridView2.DataSource = Datatable1”,这很好(即时),所以这一定是由于我构建数据源以添加图标代替返回的列 ClmStatus .有什么建议吗?
标签: vb.net