extjs Grid checkboxmodel分组和折叠问题与行项目复选框选择

时间:2015-04-13 17:37:02

标签: extjs extjs4.2

我正在使用Extjs Gridcheckbox in header功能进行Collapse分组。 问题在于,无论何时折叠任何组,都会在单独的行中选中复选框。如果我选择/取消选中该复选框,则选择/取消选中其他一些复选框,而不是单击行中的复选框。可能是什么问题?

下面是代码。

Ext.define('extGrid', {
    extend: 'Ext.grid.Panel',
    alias: 'widget.myGrid',
    id: 'myGrid',
    autoScroll: true,
    height: 700,
    store: 'myStore',
    preventHeader: true,

    {
    ftype: 'grouping',
    groupHeaderTpl: [                                                                                             
                 '<input id="\'check_{[values.rows[0].data.Id]}\'" class="chkGrp" type="checkbox" > <div style="display:inline-block; min-width: 500px;" >({[values.children.length]})</div> {[Ext.Date.format(new Date(values.rows[0].data.dueDate),\'d-M-Y\')]} '
                ],
           hideGroupedHeader: false,
           startCollapsed: false,
           collapsible: true                                                                       
    },
        selType: 'checkboxmodel', 
        selModel: {         
            injectCheckbox: 0,
            pruneRemoved: false,
            allowDeselect: false,
            checkOnly: true,
            singleSelect: false,
        },
        listeners: {
                groupclick: function(grid, field, value, e){
                                var t = e.getTarget('.chkGrp');
                                  if (t) {
                                                var checked = t.checked;  
                                                var groupingFeature = grid.up('grid').getView().features[0];
                                                groupingFeature.expand(value);

                                                if (checked) {
                                                    Ext.get(t.id).dom.checked = true;
                                                } else {
                                                    Ext.get(t.id).dom.checked = false;  
                                                }

                                                grid.getStore().each(function(rec, index){
                                                  if(rec.data.m == value){
                                                  grid.getSelectionModel().setLocked(false);
                                                                if(checked) {
                                                                        grid.getSelectionModel().select(index, true);
                                                                } else {
                                                                        grid.getSelectionModel().deselect(index);
                                                                }
                                                  }
                                                });

                                  } else {
                                      var checkBoxArray = Ext.get(field).query('.chkGrp');
                                      if (checkBoxArray.length > 0) {
                                          var checkBox = checkBoxArray[0];  
                                          Ext.get(checkBox.id).dom.checked = checkBox.checked;
                                      }


                                  }
                }
    },
    columns: [
        {
            header: 'test',
            dataIndex: 'test1',
            width: 200,
        }, {
            header: 'test2',
            sortable: true,
            width: 400,
            dataIndex: 'test3',
        },

    ],
    collapsible: true,
    columnLines: true,
    plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
        clicksToEdit: 1
    })]
});

1 个答案:

答案 0 :(得分:0)

我在下面的网址找到了修复程序,它对我有用。

http://www.sencha.com/forum/showthread.php?264961-Grid-Grouping-Bug