关于cxGridTableView表格按照某列进行排序后,结果发现DataController 里面的数据没有排序。怎么解决?

喜欢编程朋友 2014-02-10 04:52:30
今天使用cxGrid组件写一个程序,没有连接数据库,直接用cxGridTableView,建了一个表格,然后写了几行数据,点击列头进行排序,发现,表格里的行进行了对应的排序。但是,奇怪的事情发生了,我点击删除按钮(代码:
i:=cxGridTableView1.DataController.GetSelectedRowIndex(selectRowIndex);
cxGridTableView1.DataController.DeleteRecord(i);)
选择第一行,之后,点删除按钮。结果发现删除的第一行数据是没有排序之前的第一行的数据,而不是排序之后第一行的数据,看来cxGrid排序时候,只是表面的排序,而实际的数据没有排序。所以打印出来的表格也是没有排序之前的表格,而不是排序之后的。主要是这个表格没有连接数据库,用的TableView,而不是DBTableView。所以,现在这个问题,不知道怎么解决??有遇到这个问题的达人没有,求帮忙解决。求赐教!高分!
...全文
443 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sundayzhao 2014-02-12
  • 打赏
  • 举报
回复
没研究过,不知道原因,但是解决这个问题可以考虑数据集中增加一个主键,删除时通过tablewiew显示的内容,然后对数据集进行locate后删除,不就行了。
喜欢编程朋友 2014-02-11
  • 打赏
  • 举报
回复
楼上的代码,先排序之后,再删除也能删除对应记录吗?我遇到的问题就是,排序后再删除,明明删除第一行,实际删除的是第5行数据,而排序后第一行的数据没有删除。你的这个代码能解决吗?
踏雪无痕 2014-02-10
  • 打赏
  • 举报
回复

var
  I: Integer;
begin
  I := cxGridTableView1.Controller.SelectedRows[0].RecordIndex;
 //这个0就是单选的第一个被选择的索引行,如果是多选的话,就把0替换成J,嵌套一个FOR循环J,即批量删除
  cxGridTableView1.DataController.DeleteRecord(I);
end;

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧