2

フロート可能なウィンドウにラップされたグリッドを開発する必要があります。ウィンドウが表示されたら、特定の行に焦点を合わせてから、ナビゲーションキーを使用して上下に移動する必要があります。これで、指定した行に(grid.getView()。focusRow(index)を使用して)フォーカスする方法を理解しましたが、そうすると、グリッドがフォーカスを失ったかのように、グリッド内を上下に移動できなくなります。 。

コードは次のとおりです。

var storage = Ext.create ('Ext.data.Store', {
    fields: ['id', 'name'] ,
    data: [
        {id:0,name:'foo'} ,
        {id:1,name:'boo'} ,
        {id:2,name:'koo'} ,
        {id:3,name:'zoo'} ,
        {id:4,name:'moo'} ,
        {id:5,name:'too'} ,
        {id:6,name:'goo'} ,
        {id:7,name:'poo'} ,
        {id:8,name:'loo'} ,
        {id:9,name:'roo'} ,
        {id:10,name:'hoo'}
    ]
});

Ext.create ('Ext.grid.Panel', {
    title: 'My Grid' ,
    width: 300 ,
    height: 200 ,
    store: storage ,
    renderTo: Ext.getBody () ,

    columns: [{
        header: 'ID' ,
        dataIndex: 'id'
    } , {
        header: 'Name' ,
        dataIndex: 'name' ,
        flex: 1
    }] ,

    listeners: {
        afterlayout: function (grid) {
            var view = grid.getView ();

            view.focusRow (storage.getCount () - 1);
            view.highlightItem (view.getNode (storage.getCount () - 1));
        }
    }
});

それで、その後、どうすればグリッドを「フォーカス」してナビゲート可能にすることができますか?

4

2 に答える 2

5

キーボードでナビゲートできるようにするには、次のような行を選択する必要があります。

grid.getView().focus();
grid.getSelectionModel().select(0); // or whatever the row index is

そして、viewreadyイベントリスナーでそれを行います。それがviewreadyイベントの目的です。

明らかに、これがエラーなしで機能するには、グリッドに少なくとも1つのレコードが必要です。最初に、その状態を確認する必要があります。

于 2012-09-03T20:35:01.040 に答える
0

focusRow()この問題には関数を使用できます

grid.getView().focusRow(0);
于 2016-09-30T08:34:54.313 に答える