1

使用德尔福 XE2。

我正在编写一个使用 cxGrids 并链接到查询/数据源的软件包。

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

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

4

3 回答 3

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 方法可能是一种更易读/更优雅的工作方式。

于 2015-02-17T14:46:13.480 回答
1

对于 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;
于 2017-09-04T22:38:03.710 回答
0

cxGridTableView.Navigator有一个刷新按钮,可以做你想做的事。

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

于 2015-02-17T17:43:54.973 回答