我有一个启用了内联编辑、虚拟滚动和键绑定的 jqGrid。我没有启用多选(这是我迄今为止的搜索所产生的结果)。
当我按下向下箭头时,将选择网格中的下一行。当我选择的值到达可见区域的底部时,网格会滚动以适应新选择的行。
当我到达第 40 行(我的 rowNum)时,向下键什么也不做。我一半希望它加载接下来的 40 行,但我想我应该知道得更好。
我的问题是,“如何使用向下箭头的按键来加载接下来的 40 条记录并将它们附加到网格中?”
使用鼠标滚轮或拖动滚动条可以正常工作。但是,如果我告诉他们必须用鼠标滚动来加载额外的数据,我的用户会大发雷霆。
“为什么不能直接将鼠标滚轮代码插入向下箭头代码?
为什么这需要这么长时间!?
为什么你不能做这个工作。”
等等等等。
我知道以下方法:
$("#grid").jqGrid('setGridParam',{page:2});
$("#grid").trigger("reloadGrid");
但是,我不确定如何将它们插入 keydown / onSelectRow 事件。此外,我担心数据被修剪后向上滚动。
这是一些网格代码:
grid.jqGrid({
scroll: 1,
url: dataUrl,
datatype: "json",
rowNum: 40,
editurl: editUrl,
colNames: dataHelper.columnNames(),
colModel: dataHelper.columnModels(),
rownumbers: true,
rownumWidth: 30,
altrows: true,
autowidth: true,
viewrecords: true,
pager: pagerId,
sortname: "id",
sortorder: "desc",
gridview: true,
jsonReader:{repeatitems: false},
ondblClickRow: function(){
var row_id = grid.getGridParam('selrow');
$(grid).editRow(row_id, true);
},
onSelectRow: function(rowid, status, e){
var reccount = grid.getGridParam("reccount");
var page = grid.getGridParam("page");
if(****SOME CONDITION****){
grid.jqGrid('setGridParam',{page: page+1});
grid.trigger("reloadGrid");
}
}
});
grid.jqGrid('navGrid', pagerId,{edit:false,add:false,del:false, searchtext: "Search", refreshtext: "Refresh"});
grid.jqGrid("inlineNav", pagerId, {edittext: "Edit", addtext: "Add", savetext: "Save", canceltext: "Cancel", deletetext: "Delete", addParams: {position: "afterSelected"}});
grid.jqGrid("filterToolbar", {stringResult: true, searchOnEnter: true});
grid.jqGrid("bindKeys", {scrollingRows: true, onEnter: function(rowid){grid.editRow(rowid, true);}});