【问题标题】:Is it possible to Stop jqGrid row(s) from being selected and/or highlighted?是否可以停止选择和/或突出显示 jqGrid 行?
【发布时间】:2011-01-10 00:38:16
【问题描述】:

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

谢谢,

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

我发现如果我通过选项

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

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

还有其他更理想的方法吗?

【问题讨论】:

  • 只是好奇:所有行、满足特定条件的行(即“奇数”行)还是特定的单行?
  • 任何被点击的行。 jqGrid 的自然行为是在单击时将 css 类 ui-state-highlight 应用于一行。我希望停止这种情况。

标签: javascript jquery jqgrid jquery-1.3.2


【解决方案1】:

使用以下代码:

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

【讨论】:

  • 完美!这正是我试图做的方式,我只是找不到合适的事件来挂断。谢谢。
  • 还要确保匹配大小写。 beforeselectrow 不起作用。
  • 使用这个实现有什么不好的,然后你禁用 onCellSelect :(
  • 它不会使行变灰,只是停止选择。在下面使用 rowattr 回调而不是 beforeSelectRow 回调添加了一个更好、更简单的答案。
【解决方案2】:

如果您像我一样拥有大量 jqGrid,并且不想为每一个都覆盖 onSelectRow,那么这里有一个 Reigel 解决方案的全球版本,非常适合我:

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

【讨论】:

  • 非常好。我认为只有拥有一大堆这些东西的人才会欣赏你的回答 +1
  • 这是一个很好的答案。使用 resetSelection 允许您保留 onSelectRow 功能并仍然清除选择(我有一个自定义复选框实现,它还可以在单​​击行时切换复选框;这允许我的代码在没有讨厌的选择颜色的情况下继续工作:))
【解决方案3】:

尝试:

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

您可以阅读文档here。希望对你有帮助……

【讨论】:

  • 比我的解决方案稍微准确一些。谢谢。
  • 这在您想要执行某些操作然后重置选择时很有用。很好的解决方案。
【解决方案4】:

我想你可以直接在 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 中复制一些值来完成这项工作。

【讨论】:

  • 谢谢,我会在早上试一试,然后回复您。
  • 为了浏览器兼容性,我将避开这个实现。然而,在 css 中隐藏这个问题似乎相当不错。无论如何感谢+1。
【解决方案5】:

是的,使用 rowattr 回调:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多