簡體   English   中英

Datagridview優化VB.Net

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM