首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于放置在行中的键/值对在jqGrid行上设置类或标识符(如ID)

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

Stack Overflow用户
提问于 2010-10-27 05:03:28
回答 2查看 13.7K关注 0票数 4

我猜afterInsertRow是要使用的方法,并且我已经通过键"readStatus“为每一行(已读/未读)获得了额外的数据。

我不想要的是在网格完成后遍历DOM,以基于某个单元格值向行添加css类。

有什么建议吗?

附加组件:

如果这是单元格数据:

代码语言:javascript
运行
复制
{"cell":["blah blah blah"],"id":"123456789","readstatus":"unread"}

如何进入“readstatus”部分?

EN

Stack Overflow用户

回答已采纳

发布于 2010-10-27 05:36:24

使用函数afterInsertRow不是最好的方法,尤其是当您使用gridview:true jqGrid option时,它几乎总是被推荐使用的。看看old answer,它主要完成您所需的工作。代码的模式可能如下所示

代码语言:javascript
运行
复制
$('#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具有callattrrowattr回调,可用于更有效地实现相同的需求。重要的是要理解,在网格的一个单元格或网格行上的类设置(请参阅答案代码中的.addClass('myErrorClass') )在页面上存在的所有元素上遵循browser reflow。因此,应该减少页面上DOM元素的更改次数。为此,严格建议使用gridview: true (有关更多详细信息,请参阅the answer )。与gridview: true一起使用的回调callattrrowattr和自定义格式化程序允许一次创建网格主体的完整内容。因此,页面上的更改次数将会减少,性能将会得到提高。

来自colModel的列属性callattr可以帮助在网格的选定单元格上设置类、样式或其他一些属性。回调rowattr可以帮助在网格的选定行上设置类、样式或其他一些属性(就像上面的例子一样)。

我建议每个读过上面答案的人看看the answer,它展示了如何使用rowattr

例如,您可以在以下答案中阅读有关callattr的更多信息:thisthisthisthis。如果您使用datatype: "xml",实现可能会稍微复杂一些:有关详细信息,请参阅the answer

票数 12
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4028019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档