2

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」に変更しました。どちらかのキーを押したままにしても、どれも登録されていません。

誰かがこの問題について何か洞察を持っていますか?

4

0 に答える 0