在ext js网格中选择行时,复选框被选中

时间:2014-11-03 06:33:27

标签: javascript extjs checkbox grid

我使用Ext.grid.CheckboxSelectionModel和Ext.grid.GridPanel来显示带复选框列的网格。 但是当我点击行时,复选框也会被选中。

我想在选择网格行时不应选中复选框。 有没有办法实现这一目标。

以下是我的代码段。

var cboxSelModel =new Ext.grid.CheckboxSelectionModel({
                checkOnly : true,
                width:100,
                header: defaultVal, 
                id: 'test',
                locked: true,
                singleSelect: true,
                listeners: {
                    rowselect: function (sm, rIndex, keepExisting, record) {            
                        uncheckIndex = -1;
                        cIndex =rIndex; 
                        updateDefaultValue();
                    },
                    rowdeselect: function (sm, rIndex, keepExisting, record) {            
                        cIndex = -1;
                        uncheckIndex =rIndex;
                        updateDefaultValue();
                    }
                }
         });

grid = new Ext.grid.GridPanel({
                id:'grid',
                width:'99%',
                border:true,
                store: store,
                tbar: toolBar,
                autoscroll: false,
                height :'100px',
                autoHeight :false,
                sm: cboxSelModel,
                cm :cm,
                height:150,
                layout: 'fit',
                stateful: true,
                stateId: 'grid',
                autoScroll:true,
                enableColumnResize : false,
                enableColumnMove : false,
                viewConfig:{
                    forceFit:true,
                    scrollOffset:0 
                },
                autoFitColumns: true,
                listeners: {
                    afterrender: function() {
                        setSelectedRows();
                        var store=grid.getStore();
                        if(store.data.length > 0 ){
                            Ext.getCmp('btnSort').setDisabled(false);
                            Ext.getCmp('btnSort').setIconClass('bmcSort');
                        }
                    },delay: 1000,
                    cellClick :function(iView, iCellEl, iColIdx, iRecord, iRowEl, iRowIdx, iEvent){
                          storeindex = iCellEl;
                          var record = grid.store.getAt(iCellEl);
                          var dValue=record.get('displayValue');
                          var sValue=record.get('storedValue');
                          var dataArray = getListData();
                          sValue=dataArray[iCellEl][1];
                          sValue = Ext.util.Format.htmlDecode(sValue);
                          dValue = Ext.util.Format.htmlDecode(dValue);                        
                          document.getElementById(InputPageComp.ComponentVars.storedValue).value=sValue;
                          document.getElementById(InputPageComp.ComponentVars.displayValue).value=dValue;
                          document.getElementById('addbtn_id').style['display']= 'none'; 
                          document.getElementById('updatebtn_id').style['display']= 'block'; 
                          Ext.getCmp('btnRemove').setDisabled(false);
                          Ext.getCmp('btnRemove').setIconClass('bmcDeleteSLT');
                          grid.getSelectionModel().selectRow(iCellEl);

                      }

                 }        
         });

2 个答案:

答案 0 :(得分:0)

var sm = Ext.create(' Ext.selection.CheckboxModel',{     checkOnly:是的  });

我已经测试过了。它应该工作

答案 1 :(得分:0)

尝试这样(在网格配置中):

selModel: {
    selType: 'checkboxmodel',
    checkOnly: true
}

小提琴:https://fiddle.sencha.com/#view/editor&fiddle/1ncs