我们在jsp中使用dojox.grid.DataGrid。
<script type="dojo/method" event="onStyleRow" args="inRow">
var grid = dijit.byId("someID");
var item = grid.getItem(inRow.index);
if(item != undefined) {
if(item.someAttribute == "1") {
inRow.customClasses = "dojoxGridMYRow";
} else {
inRow.customClasses = "dojoxGridRow";
}
}
if(aBoolean) {
inRow.customStyles = "backgrund-color: #FFCC00";
}
//dojox.grid.DataGrid.prototype.onStyleRow.apply(this, arguments);
//grid.focus.styleRow(inRow);
//grid.edit.styleRow(inRow);
</script>
第一个注释行是单击行时获得正常行为。 但它不会改变任何东西,直到调用grid.update(),这是不好的,重新加载许多行。它就像一个闪烁的。奇怪的是,如果鼠标越过更改的行,它会更改背景颜色(如果没有调用更新)。所以必须没有更新就可以。调用updateRow或renderRow这样的东西会导致无限循环。
任何人都可以帮助我吗? :/
编辑: 我还尝试复制onStyleRow的行为(因为所选行直接标记为红色),但除了设置customClasses并调用this.focus.styleRow(inRow)和this.edit.styleRow(inRow)之外别无其他。将这些行添加到我的函数中也没有任何效果。
答案 0 :(得分:2)
inRow.customStyles = "backgrund-color: #FFCC00";
您似乎拼写错误background
。
答案 1 :(得分:1)
对于自定义类,您可能希望附加类(在其前面有空格)而不是覆盖行的类。替换类会搞乱默认的CSS。除非那是你想要的......
inRow.customClasses += "dojoxGridMYRow";
是的,你最后想要这个:
dojox.grid.DataGrid.prototype.onStyleRow.apply(this, arguments);
我没有看到您的问题,但我正在以编程方式创建我的网格并使用Dojo 1.7,因此我们的环境非常不同。