最近作Ext的时候遇到一个问题,发上来你们分享。数组
问题描述:code
我要弹出一个带sm的gridView让用户选择,而用户以前的选择项要在初始化是保持选中状态。get
解决方案:it
在渲染结束后遍历store中的数据,而且调用sm的selectRows方法进行选中io
注意:function
一、注意不能在渲染以前调用;class
二、不能调用selectRow方法。渲染
代码:List
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);
写得很差,有什么问题,欢迎你们批评指正。select