[英]Datagridview optimization VB.Net
我只想問一下是否還有另一種方法可以填充datagridview中的單元格。 目前,我正在使用此代碼:
對於i = DataGridView1.CurrentCell.RowIndex到x-1
DataGridView1.Rows(i).Cells("LastName").Value = empcoll.Item(i).LastName
DataGridView1.Rows(i).Cells("FirstName").Value = empcoll.Item(i).FirstName
DataGridView1.Rows(i).Cells("MiddleName").Value = empcoll.Item(i).MiddleName
DataGridView1.Rows(i).Cells("CreatedBy").Value = empcoll.Item(i).CreatedBy
DataGridView1.Rows(i).Cells("CreateDate").Value = empcoll.Item(i).CreateDate
DataGridView1.Rows(i).Cells("Status").Value = empcoll.Item(i).Status
DataGridView1.Rows(i).Cells("DailySalary").Value = empcoll.Item(i).DailySalary
DataGridView1.Rows(i).Cells("BirthDate").Value = empcoll.Item(i).BirthDate
Next i
但是,當我將其用於具有大量記錄的數據庫時,它往往加載緩慢並掛斷。
您可以使用SQLDataSource控件( http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.sqldatasource.aspx ),然后將DataGridView綁定到SQLDataSource。 在此處進行了描述: http : //www.vkinfotek.com/gridview/bind-gridview-sqldatasource-control.html 。
通常,應該將列綁定到對象的屬性,而不是當前使用的方法。
看起來像這樣
LastNameColumn.DataPropertyname = "LastName"
FirstNameColumn.DataPropertyname = "FirstName"
....
DataGridView1.DataSource = MyListofEmployeeObjects
至於加載速度,有兩個選項:分頁和虛擬模式。
使用分頁,您可以一次從數據庫中提取X個Y記錄,並將它們顯示在網格中。
虛擬模式( http://msdn.microsoft.com/zh-cn/library/ms171622.aspx )使DataGridView可以處理從數據庫到數據庫的記錄的自動拉/推,因此您不必加載所有記錄立刻。
好吧,我更喜歡對不受限制的DataGridViews使用DatagridView.Rows.Add方法。
像這樣:
Dim loData(7) as object
DataGridView1.Rows.Clear()
For i = DataGridView1.CurrentCell.RowIndex To x - 1
loData(0) = empcoll.Item(i).LastName
loData(1) = empcoll.Item(i).FirstName
loData(2) = empcoll.Item(i).MiddleName
loData(3) = empcoll.Item(i).CreatedBy
loData(4) = empcoll.Item(i).CreateDate
loData(5) = empcoll.Item(i).Status
loData(6) = empcoll.Item(i).DailySalary
loData(7) = empcoll.Item(i).BirthDate
DataGridView1.Rows.Add(loData)
Next i
我通常聲明enum為每個數組元素賦予一個含義名稱,並使代碼更簡潔:
private enum eCols
LastName
Firstname
MiddleName
CreatedBy
CreateDate
Status
DailySalary
BirthDate
end enum
Dim loData(7) as object
DataGridView1.Rows.Clear()
For i = DataGridView1.CurrentCell.RowIndex To x - 1
loData(eCol.LastName) = empcoll.Item(i).LastName
loData(eCol.FirstName) = empcoll.Item(i).FirstName
loData(eCol.MiddleName) = empcoll.Item(i).MiddleName
loData(eCol.CreatedBy) = empcoll.Item(i).CreatedBy
loData(eCol.CreateDate) = empcoll.Item(i).CreateDate
loData(eCol.Status) = empcoll.Item(i).Status
loData(eCol.DailySalary) = empcoll.Item(i).DailySalary
loData(eCol.BirthDate) = empcoll.Item(i).BirthDate
DataGridView1.Rows.Add(loData)
Next i
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.