最近作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