在不丢失选定记录的情况下刷新查询/cxGrid
Refresh Query / cxGrid without losing selected record
我知道执行以下操作会刷新查询。
query.Close;
query.Open;
但在执行此操作后,它会将焦点设置回 cxGrid 上的第一条记录。
有没有办法让当前记录在刷新查询后保持选中状态?
谢谢。
我做了以下..
procedure Tdatamodule.RefreshGrid;
var pos : tbookmark;
begin
pos := qryMainGrid.GetBookmark;
try
qryMainGrid.Close;
qryMainGrid.Open;
qryMainGrid.GotoBookmark(pos);
finally
qryMainGrid.FreeBookmark(pos);
end;
结束;
但现在收到错误消息 找不到数据集的书签。
如有任何建议,我们将不胜感激。
要刷新数据集,请调用 Refresh
method and to remember the dataset cursor position use the bookmark. You query for the bookmark to the current cursor position by calling GetBookmark
, refresh the dataset and move to the bookmarked position by calling GotoBookmark
:
var
Bookmark: TBookmark;
begin
Bookmark := Query.GetBookmark;
Query.Refresh;
Query.GotoBookmark(Bookmark);
end;
您不需要调用 FreeBookmark
to free the bookmark in your Delphi version because the TBookmark
type 成为动态数组,因此当它超出函数范围时由编译器管理。
我知道执行以下操作会刷新查询。
query.Close;
query.Open;
但在执行此操作后,它会将焦点设置回 cxGrid 上的第一条记录。
有没有办法让当前记录在刷新查询后保持选中状态?
谢谢。
我做了以下..
procedure Tdatamodule.RefreshGrid;
var pos : tbookmark;
begin
pos := qryMainGrid.GetBookmark;
try
qryMainGrid.Close;
qryMainGrid.Open;
qryMainGrid.GotoBookmark(pos);
finally
qryMainGrid.FreeBookmark(pos);
end;
结束;
但现在收到错误消息 找不到数据集的书签。
如有任何建议,我们将不胜感激。
要刷新数据集,请调用 Refresh
method and to remember the dataset cursor position use the bookmark. You query for the bookmark to the current cursor position by calling GetBookmark
, refresh the dataset and move to the bookmarked position by calling GotoBookmark
:
var
Bookmark: TBookmark;
begin
Bookmark := Query.GetBookmark;
Query.Refresh;
Query.GotoBookmark(Bookmark);
end;
您不需要调用 FreeBookmark
to free the bookmark in your Delphi version because the TBookmark
type 成为动态数组,因此当它超出函数范围时由编译器管理。