我为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();
答案 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;
}
}