2

在编辑一行(模式内联)后,我尝试根据新值更改单元格的一些 css 属性。

通常:编辑一行后,该行中包含字母“D”的所有单元格我使用新的 css 属性更新单元格:背景颜色:灰色(使用 setCell 方法)

为此,我使用内联编辑:

grid.jqGrid('navGrid',"#pager",{edit:false, add:false, del:false});
grid.jqGrid('inlineNav',"#pager",{edit:true, add:false, del:false, editParams: myEditParam});

为了在编辑后更改背景,我使用方法 aftersavefunc

myEditParam :
...
    aftersavefunc: function(rowId, dataFromServer)
    {
      var rowData = $("#list").jqGrid("getRowData", rowId);
      for (var key in rowData)
      {
        if (rowData[key] == "D")
        {
          key++;
          $("#list").jqGrid("setCell",rowId, key, "", {"background-color": "#ECECEC"}  );
        }
      }
    },
...

这段代码有效,但不幸的是,当我对网格的一列进行排序时,setCell 方法没有被保留!(细胞失去了它的背景颜色:灰色)

在新值的功能中编辑后是否存在更好的更改背景的方法?

谢谢你的帮助;)

4

2 回答 2

1

我建议从该事件中删除样式,而是将其移至下面更通用的功能。如果未应用样式,您始终可以在 jqGrid 上触发刷新,作为编辑后代码的一部分。

以下函数将检查每个列单元格值,如果 TestValue 匹配,则将类添加到行中。

    rowattr: function (rd) {
           if (rd.ColumnName == TestValue) { return {"class": "RowBoldClass"}; }//if
    },

和匹配的类

RowBoldClass { font-weight:bold; .....

我的回答让一行加粗,改变背景颜色 - dwr

于 2013-04-18T14:13:31.297 回答
0

如果您确实需要更改值“D”的列中单元格cellattr的格式/颜色/样式,那么您应该使用(参见答案这个)。

如果您需要更改行的格式/颜色/样式,那么您应该使用rowattr(见答案)。

有一点很重要:在行编辑结束时既不会调用cellattr也不会调用。rowattr所以你仍然必须使用aftersavefunc回调。

当前的代码aftersavefunc似乎让我有点奇怪。首先,我从来没有要求根据值(在您的情况下为“D”)在网格的任何列中标记值。通常,只需要测试特定列或列的值,然后标记单元格或标记行中的其他单元格。

无论如何,通常不仅需要在值为“D”的情况下添加类,而且如果值不是“D” ,则删除该类。

我修改了答案中的演示以支持内联编辑(应该使用双击开始编辑并按下Enter停止编辑)。修改后的demo使用了旧demo中aftersavefunc额外使用的以下代码:cellattr

aftersavefunc: function (rowId) {
    var closed = $(this).jqGrid("getCell", rowId, "closed"), indexOfColumn;
    if (closed === "Yes") {
        // add CSS classes to the cell used to mark
        $(this).jqGrid("setCell", rowId, "name", "",
           "ui-state-error ui-state-error-text");
    } else {
        // remove CSS classes from the cell used to mark
        indexOfColumn = getColumnIndexByName.call(this, "name");
        $(this.rows.namedItem(rowId).cells[indexOfColumn])
            .removeClass("ui-state-error ui-state-error-text");
    }
}
于 2013-04-18T16:13:25.627 回答