是否可以阻止jqGrid行被选中和/或突出显示?

时间:2010-01-27 15:30:55

标签: javascript jquery jqgrid jquery-1.3.2

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

谢谢,

更新 我已经能够“hackily”实现一些似乎是临时修复的东西。我真的不喜欢它,并且如果有一个更好的解决方案,那么它会更好...

我发现如果我通过了选项

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

当我实例化jqGrid时,我可以在添加时删除突出显示。

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

5 个答案:

答案 0 :(得分:51)

使用以下代码:

beforeSelectRow: function(rowid, e) {
    return false;
}

答案 1 :(得分:6)

如果你和我一样拥有大量的jqGrids并且不想为每一个覆盖onSelectRow,这里是Reigel解决方案的全球版本,对我很有用:

jQuery.extend(jQuery.jgrid.defaults, {
    onSelectRow: function(rowid, e) {
        $('#'+rowid).parents('table').resetSelection();
    }
});

答案 2 :(得分: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中复制一些值才能使其正常工作。

答案 3 :(得分:1)

尝试:

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

您可以阅读文档here。希望它可以帮助你...

答案 4 :(得分:0)

是的,使用rowattr回调:

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

这还会使该行显示为灰色并禁用选择。