我正在使用DataGridView從DataTable加載數據。此DataGridView位於選項卡(Forms.TabPage)上。當點擊這個標籤時,無論數據是否被加載,數據網格都需要一兩秒鐘的時間從上到下進行繪製。Slow DataGridView繪圖渲染
有什麼我可以做的,以加快單擊Tab時的繪圖\渲染?
我不認爲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。有什麼建議麼? – madlan 2010-10-06 20:57:37