【发布时间】:2014-06-28 08:53:42
【问题描述】:
以下是我正在处理的代码 sn-p:
var
myTableView: TcxGridDBBandedTableView
rowcount : integer;
.....
.....
procedure ExecutePaste;
begin
....
....
....
....
rowcount := myTableView.DataController.RowCount; //rowcount is 3 here
myTableView.DataController.Post; //Post the changes into database
rowcount := myTableView.DataController.RowCount; //rowcount becomes 2 here
....
end;
当我右键单击此 myTableView 中的任何行并从上下文菜单中选择复制行选项时,将调用 CopyRow 函数来复制剪贴板中的行。现在,当我再次右键单击另一行并在上下文菜单中选择粘贴选项时,将调用 ExecutePaste 函数。 ExecutePaste 方法通过以下语句将剪贴板数据推送到数据库:
myTableView.DataController.Post;
数据在数据库中发布得很好,但我试图粘贴的行消失了,我必须刷新屏幕才能看到更新/粘贴的行。在调试时,我注意到myTableView.DataController.Rowcount 为 3(我的 tableview 中的三行,这是正确的),但只要我的调试器通过 myTableView.DataController.Post;行,它仍然是2。我不知道为什么我的表格视图不刷新?我的表格视图也有一些隐藏的列。任何关于这方面的线索、想法、建议都会对我非常有帮助。
【问题讨论】:
-
"是 3[...] 仍然是 2]" 令人困惑。什么是 RowCount before 您一开始就执行 select-row-copy,并且复制操作应该添加新行或将复制选择的行中的详细信息复制到选择的行粘贴到(如果有的话)?
-
@MartynA - 我的表格视图中有 3 行。我想将第二行的所有单元格复制到第三行。所以当我选择第二行并复制它时,它会被复制到剪贴板上。现在我选择第三行并在那里执行粘贴。复制命令不会添加任何额外的行,而只是从一行复制并粘贴到另一选定的行。
-
@MartynA - 我已经编辑了我的问题并在其中包含了行数。
-
奇怪。听起来这可能是 cxGrid 的一个怪癖。我这里没有最新版本 - 作为一种解决方法,您是否尝试过做一些应该导致 TableView 自我刷新的事情,比如将底层数据集向前滚动一行然后再向后滚动?
-
我的意思是,做一些暂时将数据集光标移出当前行然后再移回的操作,例如 .Next 后跟 .Prior 或 .MoveBy(1) 然后 MoveBy(-1 )。顺便说一句,我并不是建议将其作为最终解决方案,更多地尝试缩小问题范围。
标签: delphi devexpress vcl delphi-xe4