extjs grid checkbox 預設選中
(2010-04-01 16:21:05)
轉載
| 標籤:extjscheckboxit |
分類:extjs |
var sm2= new Ext.grid.CheckboxSelectionModel({
singleSelect:this.is_singleSelect,
renderer:this.checkboxRenderer.createDelegate(this) //注意添加這個renderer
});
this.grid = new Ext.grid.GridPanel({//列表
border:false,
height:300,
store: ds,
cm: colModel,
sm: sm2,
});
//定義renderer
checkboxRenderer:function(value, cellmeta, record,rowIndex, columnIndex, store){
var row = this.grid.getStore().getById(record.id);
var id = row.get(this.id_key); //this.id_key 是一行的key 這樣,可以根據這一行資料確定是否需要預設選擇或根本就不出現選擇框。
var isSelect = false;
//選中邏輯
if(!isSelect){
return '<div class="x-grid3-row-checker"> </div>';
}else{
return '';
}
},
Ext.onReady(function() { var testData = [ ['1','xxxxx'], ['2','aaaa'], ['3','xxyyy'], ['4','bbbb'] ]; var selectValue = ['bbbb','aaaa']var store = new Ext.data.SimpleStore({ fields:['id','name']}); var sm = new Ext.grid.RowSelectionModel({ listeners:{ 'rowselect':function(sm,rowIndex,r){ Ext.log("select",rowIndex,r.get('name')) } } });var grid = new Ext.grid.GridPanel({ width: 800, height: 500, autoScroll: true, store: store, sm:sm, columns: [ sm, { header: '序號', dataIndex: 'id', sortable: true }, { header: '名字', dataIndex: 'name', sortable: true } ]}); var v = new Ext.Viewport({ items:[grid] }); store.on('load',function(store,records,options){ var arr=[]; for(var i=0;i<records.length;i++){ var record = records[i]; var isMatch = selectValue.indexOf(record.get('name'))!=-1; if(isMatch){ arr.push(record); } } sm.selectRecords(arr); },this,{delay:1000}) store.loadData(testData);});
提問者對於答案的評價:
確實是需要延時,謝謝你了~~
其他回答
Ext.grid.CheckboxSelectionModel 是繼承Ext.grid.RowSelectionModel的.
看下API:
selectRecords( Array records, [Boolean keepExisting] ) : void
Select records.
Parameters:
records : Array
The records to select
keepExisting : Boolean
(optional) True to keep existing selections
Returns:
void
你可以在store的load事件裡面,遍曆尋找你要的record,
然後執行grid.getSelectionModel().selectRecords(
var sm = grid. getSelectionModel();//獲得選擇模型sm.selectAll();sm.selectFirstRow();sm.selectLastRow();selectNext();selectPrevious();selectRange( Number startRow, Number endRow, [Boolean keepExisting] ) ;selectRecords( Array records, [Boolean keepExisting] );selectRow( Number row, [Boolean keepExisting] );