1

我们在 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) 之外什么也没有。将这些行添加到我的函数中也不起作用。

4

2 回答 2

2
inRow.customStyles = "backgrund-color: #FFCC00";

你好像拼错background了。

于 2010-12-16T14:31:07.310 回答
1

对于自定义类,您可能希望附加您的类(前面有一个空格),而不是覆盖行的类。替换类会破坏默认的 CSS。除非那是你想要的...

inRow.customClasses += "dojoxGridMYRow";

是的,你最后想要这个:

dojox.grid.DataGrid.prototype.onStyleRow.apply(this, arguments);

我没有看到您的问题,但我正在以编程方式创建网格并使用 Dojo 1.7,因此我们的环境非常不同。

于 2012-06-04T21:28:55.103 回答