向 cxGrid 批量插入数据时提高刷新速度
一、View 的类型是 cxGridDBTableView
- cxGrid.DisableControls;
cxGrid.EnableControls;
(此处怀疑应为View后台连接的数据集的DisableControls方法和EnableControls方法)
如仍觉得慢,可以把
cxGrid1DBTableView --> DataController --> DataModeController的GridMode
设置为 True ,数据装入就会快速很多了,但分组就相对慢些。
详细用法请查阅其联机文档资料。
2.set DataController->DetaillnSQLMode
(captions);
二、View 的类型是 cxGridTableView
默认情况下,每修改一个单元格的值时,cxGrid 都会执行一次刷新操作,从而导致插入速度下降。可以使用 DataController 的 BeginUpdate 方法来禁止刷新,完成批量插入后使用 EndUpdate 方法恢复刷新。
需要注意的是:
- 调用
BeginUpdate后,如果不调用EndUpdate,表格将不再刷新显示,所以一定要使用try...finally...结构来保证EndUpdate被调用。 - 在
DataController和EndUpdate中间,不可以调用以下方法:Append,Insert,Post,SetEditValue,FindRecordIndexByText。
try
cvAddOrder.DataController.BeginUpdate;
for i := 7 to 150 do
with cvAddOrder.DataController do
begin
iRecordIndex := InsertRecord(RecordCount);
Values[iRecordIndex, clId.Index] := iRecordIndex + 1;
Values[iRecordIndex, clCaption.Index] := ExcelApp.WorkSheets[1].Cells[i, 4].Value;
Values[iRecordIndex, clPrice.Index] := ExcelApp.WorkSheets[1].Cells[i, 6].Value;
Values[iRecordIndex, clNumber.Index] := ExcelApp.WorkSheets[1].Cells[i, 7].Value;
Values[iRecordIndex, clTotal.Index] := ExcelApp.WorkSheets[1].Cells[i, 6].Value * ExcelApp.WorkSheets[1].Cells[i, 7].Value;
end;
finally
cvAddOrder.DataController.EndUpdate;
end;

浙公网安备 33010602011771号