描述:主界面打开一个windows,windwos里面包含一个datagrid,欲用键盘上下键控制上下选择行:
1、
datagrid是在一个easyui-window中的,打开windows(包含datagrid):
$('#win').window('open');
为了用上下键可以向上向下选中行,绑定扩展方法
$('#detail').datagrid('keyCtr');//
//扩展的方法
$.extend($.fn.datagrid.methods, {
keyCtr: function (jq) {
return jq.each(function () {
var grid = $(this);
grid.datagrid('getPanel').panel('panel').attr('tabindex', 1).bind('keydown', function (e) {
switch (e.keyCode) {
case 38: // up
var selected = grid.datagrid('getSelected');
var rows = grid.datagrid('getRows');
if (selected) {
var index = grid.datagrid('getRowIndex', selected);
if (index > 0) {
grid.datagrid('selectRow', index - 1);//???
}
} else {
grid.datagrid('selectRow', rows.length - 1);
}
break;
case 40: // down
var selected = grid.datagrid('getSelected');
if (selected) {
var index = grid.datagrid('getRowIndex', selected);
if (index < grid.datagrid('getRows').length - 1) {
grid.datagrid('selectRow', index + 1);//???
}
} else {
grid.datagrid('selectRow', 0);
}
break; }
});
});
}
});
问题:
主界面第一次打开windows,用上下键可以正常的跳到上一行、下一行;
关闭windows [$('#win').window('open');] 后再打开,再点↓键,则是跳了两行,就像是index+2 了;
再关闭,重新打开,就是index+3了;......为什么呢?
窗体的关闭的确不是销毁,里面的东西还在,但是我每次都是重新取的选中行啊 var selected = grid.datagrid('getSelected');
1、
datagrid是在一个easyui-window中的,打开windows(包含datagrid):
$('#win').window('open');
为了用上下键可以向上向下选中行,绑定扩展方法
$('#detail').datagrid('keyCtr');//
//扩展的方法
$.extend($.fn.datagrid.methods, {
keyCtr: function (jq) {
return jq.each(function () {
var grid = $(this);
grid.datagrid('getPanel').panel('panel').attr('tabindex', 1).bind('keydown', function (e) {
switch (e.keyCode) {
case 38: // up
var selected = grid.datagrid('getSelected');
var rows = grid.datagrid('getRows');
if (selected) {
var index = grid.datagrid('getRowIndex', selected);
if (index > 0) {
grid.datagrid('selectRow', index - 1);//???
}
} else {
grid.datagrid('selectRow', rows.length - 1);
}
break;
case 40: // down
var selected = grid.datagrid('getSelected');
if (selected) {
var index = grid.datagrid('getRowIndex', selected);
if (index < grid.datagrid('getRows').length - 1) {
grid.datagrid('selectRow', index + 1);//???
}
} else {
grid.datagrid('selectRow', 0);
}
break; }
});
});
}
});
问题:
主界面第一次打开windows,用上下键可以正常的跳到上一行、下一行;
关闭windows [$('#win').window('open');] 后再打开,再点↓键,则是跳了两行,就像是index+2 了;
再关闭,重新打开,就是index+3了;......为什么呢?
窗体的关闭的确不是销毁,里面的东西还在,但是我每次都是重新取的选中行啊 var selected = grid.datagrid('getSelected');
//扩展的方法
$.extend($.fn.datagrid.methods, {
keyCtr: function (jq) {
return jq.each(function () {
var grid = $(this);
if(!isbind){
grid.datagrid('getPanel').panel('panel').attr('tabindex', 1).bind('keydown', function (e) {
switch (e.keyCode) {
case 38: // up
var selected = grid.datagrid('getSelected');
var rows = grid.datagrid('getRows');
if (selected) {
var index = grid.datagrid('getRowIndex', selected);
if (index > 0) {
<span style="color: #FF0000;">grid.datagrid('selectRow', index - 1);//???</span>
}
} else {
grid.datagrid('selectRow', rows.length - 1);
}
break;
case 40: // down
var selected = grid.datagrid('getSelected');
if (selected) {
var index = grid.datagrid('getRowIndex', selected);
if (index < grid.datagrid('getRows').length - 1) {
<span style="color: #FF0000;">grid.datagrid('selectRow', index + 1);//???</span>
}
} else {
grid.datagrid('selectRow', 0);
}
break;
}
});
isbind=true;
}
});
}
});