很多人私下问我这个问题, 现在把写出来。 我拿ext里面自带的例子ext-3.0.3/examples/grid/array-grid.js来修改. var grid = null; Ext.onReady(function(){ Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); var myData = [ //在最前面加一列,以控制选中与否。 [true,'3m Co',71.72,0.02,0.03,'9/1 12:00am'], [false,'Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'], [false,'Altria Group Inc',83.81,0.28,0.34,'9/1 12:00am'], [false,'American Express Company',52.55,0.01,0.02,'9/1 12:00am'], [true,'American International Group, Inc.',64.13,0.31,0.49,'9/1 12:00am'], [true,'AT&T Inc.',31.61,-0.48,-1.54,'9/1 12:00am'] ]; function change(val){ if(val > 0){ return '<span style="color:green;" mce_style="color:green;">' + val + '</span>'; }else if(val < 0){ return '<span style="color:red;" mce_style="color:red;">' + val + '</span>'; } return val; } function pctChange(val){ if(val > 0){ return '<span style="color:green;" mce_style="color:green;">' + val + '%</span>'; }else if(val < 0){ return '<span style="color:red;" mce_style="color:red;">' + val + '%</span>'; } return val; } //var grid = null; var sm = new Ext.grid.CheckboxSelectionModel({ singleSelect: false, checkOnly: false }); var cm = new Ext.grid.ColumnModel([ sm, {id:'company',header: 'Company', width: 160, sortable: true, dataIndex: 'company'}, {header: 'Price', width: 75, sortable: true, renderer: 'usMoney', dataIndex: 'price'}, {header: 'Change', width: 75, sortable: true, renderer: change, dataIndex: 'change'}, {header: '% Change', width: 75, sortable: true, renderer: pctChange, dataIndex: 'pctChange'}, {header: 'Last Updated', width: 85, sortable: true, renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'} ]); // create the data store var store = new Ext.data.ArrayStore({ fields: [ {name: 'selected'}, {name: 'company'}, {name: 'price', type: 'float'}, {name: 'change', type: 'float'}, {name: 'pctChange', type: 'float'}, {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'} ], listeners : { 'load' : function() { //grid.getSelectionModel().selectRow(1); } } }); // manually load local data store.loadData(myData); // create the Grid grid = new Ext.grid.GridPanel({ store: store, cm: cm, stripeRows: true, autoExpandColumn: 'company', height: 350, width: 600, title: 'Array Grid', // config options for stateful behavior stateful: true, stateId: 'grid' }); grid.on("render",function(){ //此处根据store的第一列来钩选行纪录. for(var i=0; i<store.getCount(); i++){ if(store.getAt(i).data.selected){ grid.selModel.selectRow(i,true); } } },this,{delay:300});//此处需要延迟以下,原因我没有研究过。 grid.render('grid-example'); //store.loadData(myData); });