当格式化程序访问其他行内容时,如何正确排序dojo数据网格单元格

时间:2011-09-09 09:21:51

标签: datagrid dojo

我在正确排序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对应于国家名称。

实际上我在这个应用程序的关键部分有同样的错误 显示对应于同一数据行的其他值的重要提示,但是 我只通过这个相当微不足道的眼睛糖果发现了这个错误。

1 个答案:

答案 0 :(得分:1)

尝试一下:

var columnNameForIso =“iso”; var iso = grid.store.getValue(grid.getItem(rowIndex),columnNameForIso);

将columnNameForIso替换为您实现的任何内容。