dojox.grid.DataGrid - onStyleRow需要更新吗? (道场1.2.0)

时间:2010-10-21 08:02:16

标签: dojo dojox.grid.datagrid

我们在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)之外别无其他。将这些行添加到我的函数中也没有任何效果。

2 个答案:

答案 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,因此我们的环境非常不同。

相关问题