更新Dojo增强网格行样式 - 发布商店提取

时间:2013-02-11 22:29:57

标签: dojo dojox.grid.datagrid dojox.grid

使用Dojo我设置了一个链接到数据存储的网格。在网格加载之后,我有一个连接函数,它循环遍历行并根据单元格的值设置行文本颜色。这很好用(下面复制的代码)。

var gagrid = new dojox.grid.EnhancedGrid({
query: {
Keyword: '*'
},
store: gastore,
structure: galayout,
escapeHTMLInData: false,
plugins: {
nestedSorting: true
}
},
document.createElement('div'));

dojo.connect(gagrid, 'onStyleRow', this, function(row) {
var item = gagrid.getItem(row.index);

if (item) {
var value = gagrid.store.getValue(item, "Performance", null);
if (value == 3) {
row.customStyles += "color: green;";
} else if (value == 2) {
row.customStyles += "color: red;";
}
}
gagrid.focus.styleRow(row);
gagrid.edit.styleRow(row);
});

我在页面/网格加载(通过用户交互)后使用了存储获取功能,从而获得了功能。它循环遍历网格存储的行,并根据用户输入更改单元格的值。再次,这工作正常,网格中的值正确更新。代码如下。

gastore.fetch({
query: {Keyword: '*'},
onComplete: function(items, request){
var i;
for (i = 0; i < items.length; i++) {
var item = items[i];
var performance;
if(parseInt(items[i]["Visits"])>=rp)
{
if(parseInt(items[i]["Bounce"])<=rb&&parseInt(items[i]["Time"])>=rmp)
{
performance=3;
}
else
{
performance=2;
}
}
else
{
performance=1;
}
gastore.setValue(item,"Performance",performance);
}
}
});

但是,一旦更新了值,自定义样式就不会立即应用于行。例如,当行变为黑色时,行的文本颜色保持为绿色。

一旦网格与(例如,对列进行排序)进行交互,行颜色就会更新为正确的颜色。

在调用商店提取功能后,有没有办法直接触发网格行的正确自定义样式?

道歉,如果我的问题长期啰嗦 - 只是想我会尝试完全解释这个问题:)

1 个答案:

答案 0 :(得分:1)

你不需要遍历行!你可以使用“格式化程序”&amp;定义布局“galayout”时的“styles”属性...... 看一看:

function getExtImg(valueOfColumn) { // Do something with the value...
  return valueOfColumn+'do something with it';
}
     

var layout = [[{'name':'Ext','field':'extension', formatter :    getExtImg ,样式:'padding:0px;'},

     

{'name':'Filename','field':'documentName',width:'auto'}]];

     

//将此布局添加到您的网格中......

您指定的格式化程序函数是每行调用的!您还在styles属性下指定的样式。

我认为这可以帮助您解决问题!

为了能够在格式化程序中更改行样式,请设置格式化程序函数,如下所示:

  

formatter:function(val,rowIdx,cell){       classes = compute_classes(val,rowIdx,cell);       cell.customClasses.push(类); }

来源: How do you conditionally style a cell in a Dojo data grid?

如您所见,您可以使用push函数将类添加到当前行!

卢西恩