1

我一直在使用 JQGrid,并且会向所有人推荐它。我不太喜欢的一个功能是内置的多选,它不使用 shift 和 ctrl 等特殊键,没有给你太多控制并强制显示复选框。

我想实现我自己的多选,如下所示:在 onSelectRow-检查是否持有 shift 或 ctrl 将行 id 添加到数组并在网格中选择它。如果没有保留,请清除数组并添加新的行 ID 并在网格中选择它。

这很容易实现,除了我需要 onSelectRow 中的一个事件来检查键是否被持有。我不希望在主文档本身上附加 keydown 和 keyup 事件。

onSelectRow: function (id) {
            event=???
            if (!event.shiftKey && !event.ctrlKey) {

            }
            else {

            }
}

问候,拜伦·科布。

编辑:解决方案 -

在 Olegs 输入之后,我做了以下事情。

  1. multiselect: true在网格定义中设置
  2. gridComplete通过设置隐藏复选框列$("#myGrid").jqGrid('hideCol', 'cb');
  3. 在选择之前我自己检查了 ctrl 键(不使用 multikey:"ctrlKey"),如果没有按下 ctrl 键,则清除选择。
  4. 稍后在需要时使用选择数组 -var SelectedRows = $("#myGrid").jqGrid('getGridParam', 'selarrrow');

beforeSelectRow: function (rowid, e) {
            if (!e.ctrlKey) {
                $("#myGrid").resetSelection();
            }
            return true;
        },
4

1 回答 1

2

由于版本 3.5.3 jqGrid 支持 beforeSelectRow事件,该事件具有您需要的事件并且将在之前调用onSelectRow

可能是使用了jqGrid的多键选项并隐藏了名为“cb”的伪列

$("#mygrid").jqGrid('hideCol','cb');

(cb - 组合框,请参阅http://www.trirand.com/blog/?page_id=393/help/multiselect-without-checkboxes-1/)将帮助您在 jqGrid 中实现您的行选择行为想。

更新:我想你也知道$("#mygrid").jqGrid('getGridParam','selarrrow')可以用来获取所有当前选定行的 id 数组,但要确保我也插入了信息。

于 2010-09-07T09:40:53.467 回答