我正在使用dojox.grid.DataGrid来显示数据,并允许用户选择一行或多行来突出显示要执行其他操作的项目。
我的问题是网格使用索引来记住所选行。如果我打开了clientSort,对行进行排序会使行更改顺序,但选择会更改为现在占用选择索引的行,然后才会排序。
为了解决这个问题,我在每次选择更改时获取所选行的项目,然后当onSort事件发生时,我在所选项目集合中的每个项目上使用getItemIndex(item)来获取新的行索引,并且我重新选择使用这些索引。
现在,我的问题是DataGrid一次加载一定数量的行数据(它使用术语页面来定义一组行数)以提高性能。当排序发生时,它以新的排序顺序重新加载数据,但仅重新加载rowsPerPage值(默认为40)。当我尝试将getItemIndex用于其新行尚未加载到网格中的项时,它返回-1并且索引为-1。 getItemIndex()函数仅在用户向下滚动并且加载行时才返回索引。
我无法找到在尝试恢复选择时发生页面加载时触发的事件。我查看了1.3.2源代码,找不到任何东西。我尝试连接到许多私有函数但没有工作。
有没有人遇到这个并找到了解决方法?
提前致谢。
答案 0 :(得分:0)
我找到了答案。 dojox.grid.DataGrid有一个私有事件(_onFetchComplete),每次下一页请求时都会触发该事件。我使用setTimeout在持续时间为300后运行恢复功能。
完成工作!