我在正确排序dojo datagrid(增强版本)时遇到问题,因为相关列的格式化程序通过rowIndex访问同一数据行的第二个值。
当对此列进行排序时,基础数组不会更改,并且索引行访问与之前相同的行(第二个值保持不变),而值正确排序。
这是我的意思的一个例子:
列“country”显示国家/地区的名称和与国家/地区对应的标志。 country.name是主值,country.iso是第二个值。
列格式化器的定义方式如下:
var formatCountryName = function(value,rowIndex){
var iso = this.grid.store.getItem(rowIndex).iso;
return '<img src="../flags/flag_'+iso+'.png">'+value;
};
如果没有排序,网格会显示
(Australian Flag) Australia
(Begian Flag) Belgium
(Canadian Flag) Canada
在相反方向对此列进行排序时,网格将显示
(Australian Flag) Canada
(Begian Flag) Belgium
(Canadian Flag) Australia
因为底层数组没有改变它的顺序和行索引 仍然访问相同的country.iso。
我如何访问country.iso的排序值,所以 flag对应于国家名称。
实际上我在这个应用程序的关键部分有同样的错误 显示对应于同一数据行的其他值的重要提示,但是 我只通过这个相当微不足道的眼睛糖果发现了这个错误。
答案 0 :(得分:1)
尝试一下:
var columnNameForIso =“iso”; var iso = grid.store.getValue(grid.getItem(rowIndex),columnNameForIso);
将columnNameForIso替换为您实现的任何内容。