刷新查询/cxGrid

Refresh Query / cxGrid

使用 Delphi XE2。

我正在编写一个使用 cxGrids 并链接到 Querys/Datasources 的软件包。

单击按钮后如何刷新查询以确保记录在 cxGrids 中是最新的。

此外,如果一条记录在 cxGrid 上突出显示,它必须记住该记录并且不会重置回网格顶部。

关闭并打开 cxgrid 后面的 dataset 以确保您拥有最新数据。

dataset.close;
dataset.open;

如果您需要记住当前记录并将光标放回它上面 - 使用如下 link 所示的书签。

http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/DB_TDataSet_GetBookmark.html

如果您不想使用书签,可以使用 dataset.locate 方法。 存储记录的主键,刷新后使用dataset.locate(dataset.fieldbyname('PK').AsDataType)带回那条记录

使用定位方法可能是一种更 readable/elegant 的工作方式。

cxGridTableView.Navigator 有一个刷新按钮,可以满足您的需要。

如果您想使用自己的按钮刷新,可以调用cxGridTableView.DataController.RefreshExternalData

对于 devexpress 的 cxgrid,博彩公司是恢复选择的糟糕解决方案,您可以使用 cxStatusKeeper(它 public 您可以从 devexpress 支持中心下载的单元)

{Init the component for restore selection}
FGridStatus := TcxGridDBTableKeeper.Create(self);
FGridStatus.LoadExpanding   := False;
FGridStatus.LoadSelection   := True;
FGridStatus.LoadFocus       := True;
FGridStatus.LoadTopRecord   := False;
FGridStatus.LoadWithDetails := False;
FGridStatus.LoadFocusedView := True;
FGridStatus.LoadFocusedItem := True;
FGridStatus.View            := gvTableElementi;

{save the current items} 
FGridStatus.Store;

{restore the selection}   
if FGridStatus.GridStored then
  FGridStatus.Restore;