2

我正在使用 dojox.grid.DataGrid 来显示数据并允许用户选择一行或多行以突出显示要执行其他操作的项目。

我的问题是网格使用索引来记住选定的行。如果我打开了 clientSort,对行进行排序会使行更改顺序,但选择会更改为现在在排序之前占据选择索引的行。

为了解决这个问题,我在每次选择更改时获取所选行的项目,然后当 onSort 事件发生时,我在所选项目集合中的每个项目上使用 getItemIndex(item) 来获取新的行索引,然后我使用这些重新选择索引。

现在,我的问题是 DataGrid 一次加载数据一定数量的行(它使用术语 page 来定义一组行数)以提高性能。当发生排序时,它会以新的排序顺序重新加载数据,但最多只能达到 rowsPerPage 值(默认值为 40)。当我尝试将 getItemIndex 用于其新行尚未加载到网格中的项目时,它返回并且索引为-1。getItemIndex() 函数仅在用户向下滚动并加载行时返回索引。

我找不到在页面加载发生以尝试恢复选择时触发的事件。我浏览了 1.3.2 的源代码,找不到任何东西。我尝试连接到许多私人功能,但没有一个工作。

有没有人遇到过这个并找到了解决方法?

提前致谢。

4

1 回答 1

1

我找到了答案。dojox.grid.DataGrid 有一个私有事件 (_onFetchComplete),每次下一页请求时都会触发该事件。我使用 setTimeout 在 300 持续时间后运行我的恢复功能。

任务完成!

于 2010-10-28T07:54:30.017 回答