代码之家  ›  专栏  ›  技术社区  ›  bcm

根据放置在行中的键/值对(如id),在jqgrid行上设置类或标识符。

  •  3
  • bcm  · 技术社区  · 14 年前

    我猜AfterInsertRow是要使用的方法,而且我已经为每一行(读/未读)准备了额外的数据,其中键为“readstatus”。

    我不希望在网格完成后横穿DOM,在行中添加基于单元格值的CSS类。

    有什么建议吗?

    附加组件:

    如果这是单元格数据:

    {"cell":["blah blah blah"],"id":"123456789","readstatus":"unread"}
    

    如何进入“readstatus”部分?

    2 回复  |  直到 11 年前
        1
  •  12
  •   Community kfsone    7 年前

    函数的用法 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”,但它的工作速度与 插入后的行 .

    更新 :答案比较古老。jqgrid的最新版本 callattr rowattr 可用于更有效地实现相同需求的回调。重要的是要理解在网格的一个单元格或网格行上设置类(请参见 .addClass('myErrorClass') 在答案代码中)如下 browser reflow 页面上现有的所有元素 . 因此,应该减少页面上DOM元素的更改次数。为此,严格建议使用 gridview: true (见 the answer 了解更多详细信息)。回调 卡拉特 , 罗瓦特 和自定义格式化程序一起使用 网格视图:真 允许创建网格体的完整内容 马上 . 因此,页面上的更改数量会减少,性能也会提高。

    列属性 卡拉特 colModel 可以帮助设置所选的类、样式或其他一些属性 细胞 网格的。回拨 罗瓦特 可以帮助设置所选的类、样式或某些其他属性 网格(与上面的例子完全一样)。

    我推荐所有读过以上答案的人看看 the answer 它显示了如何使用 罗瓦特 .

    你可以阅读更多关于 卡拉特 例如,在以下答案中: this , this , this , this . 如果你使用 datatype: "xml" 实现可能会稍微复杂一点:请参见 the answer 有关详细信息。

        2
  •  2
  •   Imran    11 年前

    这也可用于将CSS类添加到行中

    var _tr = $("#gridId").jqGrid("getInd", rowid, true);
    $(_tr).addClass("ui-state-error");
    

    希望有帮助