0

我只想问是否有另一种选择来填充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

但是当我将它用于具有大量记录的数据库时,它往往会加载缓慢并挂起。

4

3 回答 3

0

通常,您应该将列数据绑定到对象的属性,而不是您当前使用的方法。

它看起来像这样

LastNameColumn.DataPropertyname = "LastName"
FirstNameColumn.DataPropertyname = "FirstName"
....
DataGridView1.DataSource = MyListofEmployeeObjects

至于加载速度,有两种选择:分页和虚拟模式。

使用分页,您可以一次从数据库中提取 X 条 Y 条记录并将它们显示在网格中。

虚拟模式 ( http://msdn.microsoft.com/en-us/library/ms171622.aspx ) 使 DataGridView 能够处理从/向数据库自动拉/推记录,这样您就不必加载所有记录立刻。

于 2012-11-26T21:35:02.820 回答
0

好吧,我更喜欢对无界 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

我通常声明 en 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
于 2013-01-16T08:42:57.040 回答
0

您可以使用 SQLDataSource 控件 ( http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.aspx ),然后将 DataGridView 绑定到 SQLDataSource。它在这里描述:http ://www.vkinfotek.com/gridview/bind-gridview-sqldatasource-control.html 。

于 2012-11-26T21:16:57.580 回答