我猜afterInsertRow是要使用的方法,并且我已经通过键"readStatus“为每一行(已读/未读)获得了额外的数据。
我不想要的是在网格完成后遍历DOM,以基于某个单元格值向行添加css类。
有什么建议吗?
附加组件:
如果这是单元格数据:
{"cell":["blah blah blah"],"id":"123456789","readstatus":"unread"}如何进入“readstatus”部分?
发布于 2010-10-27 05:36:24
使用函数afterInsertRow不是最好的方法,尤其是当您使用gridview:true jqGrid option时,它几乎总是被推荐使用的。看看old answer,它主要完成您所需的工作。代码的模式可能如下所示
$('#list').jqGrid({
    //...
    loadComplete: function() {
        var ids = $(this).jqGrid("getDataIDs"), l = ids.length, i, rowid, status;
        for (i = 0; i < l; i++) {
            rowid = ids[i];
            // get data from some column "readStatus"
            status = $(this).jqGrid("getCell", rowid, "readStatus");
            // or get data from some 
            //var rowData = $(this).jqGrid("getRowData', rowid);
            // now you can set css on the row with some
            if (status === "error") {
                $('#' + $.jgrid.jqID(rowid)).addClass('myErrorClass');
            }
        }
    }
});它看起来像“网格完成后遍历DOM”,但它的工作速度与afterInsertRow的使用一样快。
更新了:答案相对较旧。较新版本的jqGrid具有callattr和rowattr回调,可用于更有效地实现相同的需求。重要的是要理解,在网格的一个单元格或网格行上的类设置(请参阅答案代码中的.addClass('myErrorClass') )在页面上存在的所有元素上遵循browser reflow。因此,应该减少页面上DOM元素的更改次数。为此,严格建议使用gridview: true (有关更多详细信息,请参阅the answer )。与gridview: true一起使用的回调callattr、rowattr和自定义格式化程序允许一次创建网格主体的完整内容。因此,页面上的更改次数将会减少,性能将会得到提高。
来自colModel的列属性callattr可以帮助在网格的选定单元格上设置类、样式或其他一些属性。回调rowattr可以帮助在网格的选定行上设置类、样式或其他一些属性(就像上面的例子一样)。
我建议每个读过上面答案的人看看the answer,它展示了如何使用rowattr。
例如,您可以在以下答案中阅读有关callattr的更多信息:this,this,this,this。如果您使用datatype: "xml",实现可能会稍微复杂一些:有关详细信息,请参阅the answer。
https://stackoverflow.com/questions/4028019
复制相似问题