刷新查询/ cxGrid

时间:2015-02-17 10:17:33

标签: delphi delphi-xe2 sybase-asa

使用Delphi XE2。

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

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

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

3 个答案:

答案 0 :(得分:2)

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

dataset.close;
dataset.open;

如果您需要记住当前记录并将光标重新放在上面 - 请使用下面链接中显示的书签。

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

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

使用locate方法可能是一种更易阅读/更优雅的工作方式。

答案 1 :(得分:0)

cxGridTableView.Navigator有一个“刷新”按钮,可以执行您想要的操作。

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

答案 2 :(得分:0)

对于devexpress的cxgrid,博彩公司是恢复选择的一个不好的解决方案,你可以使用cxStatusKeeper(它可以从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;