pagingtoolbar を使用して gridpanel で keydown イベントを動作させようとしています。これにより、上矢印キーまたは下矢印キーを押したままにすると、キーを停止したり繰り返しキーを押したりする必要なくページを移動できます。このプロセスはキーアップ イベントで機能しますが、キーダウン イベントを認識させることはできませんでした。
私のコードは現在のものです:
グリッド:
trackGrid = new Ext.grid.GridPanel({
layout: 'fit',
autoSizeColumns:false,
autoHeight:true,
maxHeight:400,
frame:true,
trackMouseOver:true,
selModel: Ext.create("Ext.selection.RowModel"),
store: TrackPaged,
columns:[
{header: 'Time', width:55, sortable: true, dataIndex: 'time'},
{header: 'Speed', width:50, sortable: true, dataIndex: 'speed', renderer: this.renderTrackSpeed},
{header: 'Dirn', width:50, sortable:true, dataIndex: 'hdg', tooltip: 'Direction of travel'},
{header: 'ECode', width:70, sortable:true, dataIndex: 'event', renderer: this.renderTrackEvent, tooltip: 'Event Code'},
{header: 'Status', width:50, sortable:true, dataIndex: 'sts'},
{header: 'id', width:50, sortable:true, dataIndex: 'lid', hidden: true}
],
viewConfig:{
forceFit:true,
EnableRowBody:true,
showPreview:false
},
bbar:trackPagedToolbar,
footerCfg:{
html:'<div id="track-info" class="grid-info"><p>No events to display</p></div>'
}
});
私のキーマップ:
trackGrid.getEl().set({tabindex: "0"})
trackGrid.getEl().addKeyMap({
eventName: "keyup",
binding: [{
key: Ext.EventObject.ENTER,
fn: function() {
this.selectTrackMarkerInfo();
}
}, {
key: [Ext.EventObject.RIGHT, Ext.EventObject.PAGE_DOWN],
fn: function(){
trackPagedToolbar.moveNext();
trackGrid.getSelectionModel().select(0);
}
},{
key: [Ext.EventObject.LEFT, Ext.EventObject.PAGE_UP],
fn: function(){
trackPagedToolbar.movePrevious();
trackGrid.getSelectionModel().select(0);
}
}, {
key: Ext.EventObject.HOME,
fn: function() {
trackPagedToolbar.moveFirst();
trackGrid.getSelectionModel().select(0);
}
}, {
key: Ext.EventObject.END,
fn: function() {
trackPagedToolbar.moveLast();
trackGrid.getSelectionModel().select(TrackPaged.getCount()-1);
}
}]
});
trackGrid.getEl().addKeyMap({
eventName: 'itemkeydown',
binding: [{
key: Ext.EventObject.DOWN,
fn: function() {
if (trackGrid.getSelectionModel().getSelection()[0].index % 14 == 13) {
trackPagedToolbar.moveNext();
trackGrid.getSelectionModel().select(0);
}
}
}, {
key: Ext.EventObject.UP,
fn: function() {
if (trackGrid.getSelectionModel().getSelection()[0] = 0) {
trackPagedToolbar.movePrevious();
trackGrid.getSelectionModel().select(13);
}
}
}]
});
KeyMap のドキュメントから、具体的に trackGrid のターゲットを追加しようとして失敗し、イベントを「itemkeydown」、「keydown」、および「keypress」に変更しました。どちらかのキーを押したままにしても、どれも登録されていません。
誰かがこの問題について何か洞察を持っていますか?