摘要:[WinForm]DataGridView 虛擬模式 實作
最近工作上遇到,要在datagridview顯示約150萬筆的大量資料
本來想說用datagridview的datasource直接綁定資料源就OK了
沒想到這樣的作法會造成datagridview繫結時花費較多時間
後來找到 datagridview在大量資料時,比較好的用法是切換成虛擬模式
經過我實作後的比較150萬筆左右的資料 時間可以從1秒 降到 0.5秒左右,實在是快非常多啊!!
首先把 datagridview的VirtualMode設為true
接下來要註冊 datagridview的CellValueNeeded事件
程式碼完整如下
private void button1_Click(object sender, EventArgs e)
{
List<MyClass> lisTD = new List<MyClass>(); //存放所有資料的List
dataGridView1.RowCount = lisTD.Count; //設定datagridview所有的資料量
}
private void dataGridView1_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
if (e.RowIndex == dataGridView1.RowCount - 1) return;
MyClass tempTD = null;
tempTD = lisTD[e.RowIndex];
switch (dataGridView1.Columns[e.ColumnIndex].Name)
{
case "Column1":
e.Value = tempTD.Date;
break;
case "Column2":
e.Value = tempTD.StockId;
break;
}
}
另外 若原先的List內容有變 要從新顯示,只需要先將列清空,再指定筆數即可 ,如下
dataGridView1.Rows.Clear();
dataGridView1.RowCount = lisTD.Count;