【问题标题】:Updating Dojo Enhanced Grid Row Style - Post Store Fetch更新 Dojo 增强的网格行样式 - 存储后获取
【发布时间】:2013-01-27 03:29:23
【问题描述】:

使用 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);
});

在页面/网格加载(通过用户交互)后,我有了一些使用 store fetch 功能的功能。它遍历我的网格存储的行并根据用户输入更改单元格的值。同样,这工作正常,网格中的值已正确更新。代码如下。

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);
}
}
});

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

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

有什么方法可以在调用 store fetch 函数后立即触发网格行的正确自定义样式?

抱歉,如果我的问题有点啰嗦 - 只是想我会尝试充分解释这个问题 :)

【问题讨论】:

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


【解决方案1】:

您不需要遍历行!在定义布局“galayout”时,您可以使用“formatter”和“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': '文件名', 'field': 'documentName', width: 'auto'}]];

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

你指定的格式化函数是为每一行调用的!还有您在样式属性下指定的样式。

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

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

格式化程序:函数(val,rowIdx,单元格){ 类 = 计算类(val,rowIdx,单元格); cell.customClasses.push(classes); }

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

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

卢锡安

【讨论】:

  • 谢谢卢锡安。这可能会有所帮助。我以前用过格式化程序。如何在格式化程序函数 (getExtImg) 本身中添加行样式?有没有办法在不将 HTML 返回到单元格的情况下做到这一点?
  • 嗨,马特,每个格式化程序函数也使用名为 rowIndex 的第二个属性调用,指定格式化程序当前执行的行的索引。我认为使用 rowIndex 您可以使用网格访问行对象。
  • 请看主帖,我添加了一些内容可以帮助您解决上一个问题!
猜你喜欢
  • 2013-11-01
  • 2013-04-04
  • 2011-11-17
  • 1970-01-01
  • 2011-08-14
  • 2013-08-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多