我在'multiselect'模式下使用jqgrid而没有分页。当用户使用鼠标点击选择单个记录时,有没有办法将这些选定的记录带到网格顶部?
提前感谢您的帮助。
答案 0 :(得分:11)
在评论中与您进行小的讨论后,我可以重新表达您的问题:“如何通过多选列实现排序?”
问题发现非常有趣所以我投入了一些时间并且可以在jqGrid的情况下建议一个解决方案来保存本地数据(datatype
不是'xml'或'json'或者'loadonce:true '选项)。
首先,演示我的建议的工作演示可以找到here:
实施包括两部分:
为了实现保持选择,我建议扩展本地data
参数,该参数使用新的布尔属性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包含基于相同想法的一些改进代码。
答案 1 :(得分:0)
如果您拥有行的ID,则可以使用以下命令对服务器端进行特殊排序: MySQL的:
Select a,b,c
FROM t
ORDER BY FIND_IN_SET(yourColumnName, "5,10,44,29") DESC
或
ORDER BY FIELD(yourColumnName, "5") DESC