23

我查看了文档,但一直找不到答案。有没有办法防止选中时突出显示行?那甚至是一种完全停止选择行的方法。我喜欢“hoverrows:true”选项,但理想情况下我想阻止一行被点击。

谢谢,

更新: 我已经能够“hackily”实现一些似乎是临时修复的东西。我根本不喜欢它,理想情况下会想要一个更好的解决方案,如果有的话......

我发现如果我通过选项

onSelectRow: function(rowid, status) {
    $('#'+rowid).removeClass('ui-state-highlight');
}

当我实例化 jqGrid 时,我可以在添加高亮时去掉它。

还有另一种更理想的方法吗?

4

5 回答 5

56

使用以下代码:

beforeSelectRow: function(rowid, e) {
    return false;
}
于 2010-01-27T23:39:47.403 回答
7

如果您像我一样拥有大量 jqGrids 并且不想为每一个都覆盖 onSelectRow,那么这里有一个 Reigel 解决方案的全球版本,对我来说效果很好:

jQuery.extend(jQuery.jgrid.defaults, {
    onSelectRow: function(rowid, e) {
        $('#'+rowid).parents('table').resetSelection();
    }
});
于 2011-09-19T08:51:21.507 回答
2

尝试:

onSelectRow: function(rowid, status) {
    $("#grid_id").resetSelection(); //Resets (unselects) the selected row(s). Also works in multiselect mode.
}

你可以在这里阅读文档。希望对你有帮助...

于 2010-01-27T16:57:08.983 回答
1

我想你可以直接在 CSS 中解决这个问题。只需覆盖特定表的 ui-state-highlight 值

#table_id tr.ui-state-highlight {
  border: inherit !important;
  background: inherit !important;
  color: inherit !important;
}

#table_id tr.ui-state-highlight a {
  color: inherit !important;
}

#table_id tr.ui-state-highlight .ui-icon {
  background-image: inherit !important;
}

inherit只是作为一个例子使用了这个值——你可能需要从你的 theme.css 中复制一些值来完成这项工作。

于 2010-01-27T16:23:07.790 回答
0

是的,使用 rowattr 回调:

rowattr: function (rowData,currentObj,rowId) {
    if (rowData.SomeField=="SomeValue") { 
        return {"class": "ui-state-disabled"};
    }
},

这也会使该行变灰并禁用选择。

于 2018-09-20T16:24:22.123 回答