Dojo DataGrid:不对列中的图像进行排序

时间:2013-03-19 16:00:38

标签: javascript datagrid dojo dojox.grid.datagrid

我为dojo datagrid列编写了一个包含图像的代码。

代码: formatter:function(cellValue,rowIndex){

    if(data.items[rowIndex].status == "COMPLETED"){
          return "<img src='app/img/dot_done.png' />"+ " " +cellValue; 
    }
        else if(data.items[rowIndex].status == "IN_PROGRESS"){
          return "<img src='app/img/dot_in_progress.png' />"+" " +cellValue; 
    }
       }

输出是: 排序前:

      (done.img) complete

      (block.img) block

       (done.img) complete

       (block.img) block

排序后:

       (done.img) block

       (block.img) block

       (done.img) complete

       (block.img) complete

因此,对于上面的代码,它不是对图像进行排序,而是对单元格值进行排序。

有人建议我解决这个问题吗?

提前致谢。

我在这里添加代码:

    var store = new ItemFileWriteStore({data: data}); 

var layout = [[

{'name': 'TaskName', 'field': 'task_name', 'width': '20%',styles: 'text-align: center;'},


{'name': 'Status', 'field': 'status', 'width': '15%', styles: 'text-align: center;',

      formatter: function(cellValue, rowIndex){

                if(data.items[rowIndex].status == "COMPLETED"){ 

                    return "<img src='app/img/dot_done.png' />"+ " " +cellValue; } 

                }}]]; 

        var grid = new DataGrid({

                 id: 'grid', store: store, structure: layout, 

             });

        grid.placeAt("newdiv");

        grid.startup();

2 个答案:

答案 0 :(得分:1)

这是一个可以解决问题的stackoverflow答案:

How to sort a dojo datagrid cell correctly when formatter accesses other row content

答案 1 :(得分:0)

我终于找到了这个bug。我必须使用cellValue来比较值,而不是数据存储。

 function(cellValue, rowIndex){

    if(cellValue == "COMPLETED"){
          return "<img src='app/img/dot_done.png' />"+ " " +cellValue; 
    }
        else if(cellValue == "IN_PROGRESS"){
          return "<img src='app/img/dot_in_progress.png' />"+" " +cellValue; 
    }
       }