JQGrid onselectrow事件 - 自定义多选

时间:2010-09-07 08:48:42

标签: jquery events jqgrid multi-select

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

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

这很容易实现,除了我需要onSelectRow 中的事件来检查键是否被保留。我宁愿不在主文档本身附加keydown和keyup事件。

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

            }
            else {

            }
}

此致 Byron Cobb。

编辑:解决方案 -

在Olegs输入之后,我做了以下几点。

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

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

1 个答案:

答案 0 :(得分:2)

Since the version 3.5.3 jqGrid支持beforeSelectRow事件,其中包含您需要的事件以及将在onSelectRow之前调用的事件。

可能使用jqGrid的multikey选项并隐藏名为“cb”的伪列

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

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

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