根据放在行中的键/值对(如ID)在jqGrid行上设置类或标识符

bcm*_*bcm 4 javascript jqgrid

我猜是afterInsertRow是要使用的方法,我已经为每一行(读/未读)提供了额外的数据,使用了键"readStatus".

我不想要的是在网格完成后横向移动DOM,根据某个单元格值将行添加到行中.

有什么建议?

添加在:

如果这是单元格数据:

{"cell":["blah blah blah"],"id":"123456789","readstatus":"unread"}
Run Code Online (Sandbox Code Playgroud)

我如何进入'readstatus'部分?

Ole*_*leg 12

函数的使用afterInsertRow并不是最好的方法,特别是如果你使用几乎总是推荐的gridview:true jqGrid选项.看看那些大多数你需要的旧答案.代码的架构可能是关于以下的

$('#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');
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

它看起来像"在网格完成后横穿DOM",但它的使用速度很快afterInsertRow.

更新:答案相对较旧.最近jqGrid的版本具有callattrrowattr可用于回调来更有效地执行相同的要求.重要的是要理解在网格的一个单元格或网格行上的类的设置(参见.addClass('myErrorClass')答案的代码)遵循浏览器对页面上存在的所有元素的重排.因此,应该减少页面上DOM元素的更改次数.为此,严格建议使用gridview: true(有关详细信息,请参阅答案).回调callattr,rowattr再加上使用和自定义格式gridview: true允许创建网格体的完整内容一次.因此,页面上的更改次数将减少,性能将得到改善.

列属性callattrcolModel可以帮助设置类,样式或选择一些其他属性单元格.回调rowattr可以帮助在选定的网格上设置类,样式或一些其他属性(与上面的示例完全相同).

我建议所有阅读上述答案的人都会看一下如何使用的答案rowattr.

您可以callattr在以下答案中阅读更多相关信息:this,this,this,this.如果您使用datatype: "xml"该实现可能会更复杂:请参阅答案以获取详细信息.


归档时间:

查看次数:

12959 次

最近记录:

12 年,2 月 前