如何利用jqgrid实现:使用方向键进行上下移动,选中行数据的功能。
html代码
<div id="grid"></div>
js
$(function() {
// 数据
var data = [
{ id: 1, name: 'John Doe', age: 25 },
{ id: 2, name: 'Jane Smith', age: 30 },
{ id: 3, name: 'Bob Johnson', age: 40 }
];
// 创建Grid
$("#grid").jsGrid({
width: "100%",
height: "400px",
// 数据
data: data,
// 列定义
fields: [
{ name: "id", title: "ID", type: "text", width: 50 },
{ name: "name", title: "Name", type: "text", width: 200 },
{ name: "age", title: "Age", type: "text", width: 50 }
],
// 行点击事件
rowClick: function(args) {
// 选中行数据
args.event.preventDefault();
args.event.stopPropagation();
this.select(args.item);
},
// 键盘事件
onKeyPress: function(args) {
// 上下移动选中行
if (args.event.keyCode == 38) { // Up arrow
var selectedRow = this.getSelectedRow();
if (selectedRow.prev().length > 0) {
this.selectRow(selectedRow.prev());
}
} else if (args.event.keyCode == 40) { // Down arrow
var selectedRow = this.getSelectedRow();
if (selectedRow.next().length > 0) {
this.selectRow(selectedRow.next());
}
}
}
});
});
1、引入必要的文件:确保页面中引入了jQuery库、jqGrid插件及其相关样式文件。
2、配置jqGrid表格:设置表格的列名、数据源等配置项。例如:
$("#grid").jqGrid({
colNames: ['姓名', '年龄', '性别'],
colModel: [
{ name: 'name', index: 'name', width: 150 },
{ name: 'age', index: 'age', width: 80 },
{ name: 'gender', index: 'gender', width: 80 }
],
url: 'data.json', // 数据接口地址
datatype: 'json', // 数据类型
autowidth: true, // 自动调整表格宽度
height: 'auto', // 表格高度自适应
multiselect: false, // 禁止多选行
onSelectRow: function(rowid) {
// 选中行事件处理函数
var rowData = $("#grid").jqGrid('getRowData', rowid);
// 在这里处理选中行数据
}
});
3、设置方向键事件:在键盘按下时添加事件监听,根据方向键的keyCode判断是向上还是向下移动,并通过setSelection方法选中对应的行。例如:
$(document).keydown(function(e) {
var selectedRowId = $("#grid").jqGrid('getGridParam', 'selrow');
if (selectedRowId) {
var nextRowId;
switch (e.keyCode) {
case 38: // 向上键
nextRowId = $("#grid").jqGrid('prevVisible', selectedRowId);
break;
case 40: // 向下键
nextRowId = $("#grid").jqGrid('nextVisible', selectedRowId);
break;
}
if (nextRowId) {
$("#grid").jqGrid('setSelection', nextRowId, true); // 选中行,并滚动到可视区域
}
} else {
var firstRowId = $("#grid").jqGrid('getDataIDs')[0];
if (firstRowId) {
$("#grid").jqGrid('setSelection', firstRowId, true); // 如果没有选中行,则选中第一行
}
}
});