Ext中gridView记录用户选择项

        最近做Ext的时候遇到一个问题,发上来大家分享。

问题描述:

        我要弹出一个带sm的gridView让用户选择,而用户之前的选择项要在初始化是保持选中状态。

解决方案:

        在渲染结束后遍历store中的数据,并且调用sm的selectRows方法进行选中

注意:

        1、注意不能在渲染之前调用;

        2、不能调用selectRow方法。

代码:

    var store = new Ext.data.Store({
        proxy: new Ext.data.MemoryProxy(data),  //data为数据源
        reader: new Ext.data.ArrayReader({}, [
            {name: 'value'},
            {name: 'name'}
        ])
    });
    store.load();

    var grid = new Ext.grid.GridPanel({
        id: 'grid',
        viewConfig: {forceFit: true},
        store: store,
        cm: cm,
        sm: sm,
        tbar: [
            {
                xtype: 'button',
                id: 'btnOK',
                text: '确定',
                handler: function() {
                    var selections = sm.getSelections();
                        win.copyToList(selections, selectID); //记录用户的选择,请根据自己的情况自行完善。
                    window.close();
                }
            },
            {
                xtype: 'button',
                id: 'btnCancel',
                text: '取消',
                handler: function() {
                    window.close();
                }
            }
        ]
    });

    var viewport = new Ext.Viewport({
        layout: 'fit',
        items: [grid]
    });  
 
    //选中用户已选中的项
    var indexs = [];
    var index = 0;
    for(var i = 0; i < data.length; i++) { //items为记录用户选择项的数组
        var record  = data[i];
        for(var j = 0; j < items.length; j++) {
            if(record[0] == items[j].value) {
                indexs[index] = i;
                index++;
            }
        }
    }
    sm.selectRows(indexs);

写得不好,有什么问题,欢迎大家批评指正。

你可能感兴趣的:(ext)