0

datagridviewのセルを埋めるための別の方法があるかどうかを尋ねたいだけです。現在、私はこのコードを使用しています:

For i = DataGridView1.CurrentCell.RowIndex To 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

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 に答える
0

一般に、現在使用している方法ではなく、列をオブジェクトのプロパティにデータ バインドする必要があります。

それはこのように見えるでしょう

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

読み込み速度に関しては、ページネーションと仮想モードの 2 つのオプションがあります。

ページネーションを使用すると、一度にデータベースから Y 件中 X 件のレコードを取得して、グリッドに表示できます。

仮想モード ( http://msdn.microsoft.com/en-us/library/ms171622.aspx ) を使用すると、DataGridView でデータベースとの間のレコードの自動プル/プッシュを処理できるため、すべてのレコードをロードする必要がありません。すぐに。

于 2012-11-26T21:35:02.820 に答える
0

私は、無制限の DataGridView に対して 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 に答える