javascript - 将选定的行从 Jqgrid 移至顶部

标签 javascript jquery jqgrid

我在“多选”模式下使用 jqgrid,并且没有分页。当用户使用鼠标单击选择单个记录时,有什么方法可以将这些选定的记录带到网格顶部吗?

预先感谢您的帮助。

最佳答案

在评论中与您进行小型讨论后,我可以重新表述您的问题:“如何通过多选列实现排序?”

问题发现非常有趣,所以我投入了一些时间,并且可以在 jqGrid 保存本地数据(datatype 不是“xml”或“json”或具有“loadonce: true' 选项)。

首先,您可以找到演示我的建议的工作演示 here :

enter image description here

实现由两部分组成:

  1. 将选择作为本地数据的一部分。作为奖励,在本地数据分页期间将保持选择。此功能非常有趣,独立于按多选列排序。
  2. 多选列排序的实现。

为了实现保存选择,我建议扩展本地 data 参数,该参数使用新的 bool 属性 cb 保存本地数据(与多选列)。下面是实现:

multiselect: true,
onSelectRow: function (id) {
    var p = this.p, item = p.data[p._index[id]];
    if (typeof (item.cb) === "undefined") {
        item.cb = true;
    } else {
        item.cb = !item.cb;
    }
},
loadComplete: function () {
    var p = this.p, data = p.data, item, $this = $(this), index = p._index, rowid;
    for (rowid in index) {
        if (index.hasOwnProperty(rowid)) {
            item = data[index[rowid]];
            if (typeof (item.cb) === "boolean" && item.cb) {
                $this.jqGrid('setSelection', rowid, false);
            }
        }
    }
}

要使“cb”列(多选列)可排序,我建议执行以下操作:

var $grid = $("#list");

// ... create the grid

$("#cb_" + $grid[0].id).hide();
$("#jqgh_" + $grid[0].id + "_cb").addClass("ui-jqgrid-sortable");
cbColModel = $grid.jqGrid('getColProp', 'cb');
cbColModel.sortable = true;
cbColModel.sorttype = function (value, item) {
    return typeof (item.cb) === "boolean" && item.cb ? 1 : 0;
};

更新:The demo包含基于相同想法的一些改进代码。

关于javascript - 将选定的行从 Jqgrid 移至顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8123825/

相关文章:

jquery - 阅读更多,显示/隐藏 html 内容

jquery - 具有 jsonstring 数据类型的 JQGrid 卡住列

asp.net - jqgrid表单编辑editoptions选择ajax添加参数

javascript - 为日期时间选择器设置 slider 的默认值

javascript - 添加 JQuery 不起作用的输入字段

javascript - 比较鼠标悬停时的 URL 以使用 javascript 显示下拉菜单

javascript - 添加第二个触发器来运行

javascript - jqGrid |添加-编辑-删除按钮不起作用

javascript - jQuery Plupload Queue - 如果输入没有文本,则不显示文件浏览器

javascript - 在缩略图悬停时显示图像下拉列表,悬停时隐藏它