avair

avair

  • 1.6k
  • 40
  • 2.2k

expand collapse issue

May 30 2023 4:40 PM

 Below is my group click code when trying to select the group i am calling toggleGroupSelection and updateGroupCheckbox functions

<GroupClick Handler="
                                                            var checkbox = e.getTarget('input[type=checkbox]');
                                                            if (checkbox) {
                                                            var groupHeader = checkbox.closest('.x-grid-group-hd');
                                                            if (groupHeader) {
                                                            // Clicked on group header checkbox
                                                            e.stopEvent(); // Prevent event propagation
                                                            var groupId = groupHeader.getAttribute('data-groupname');
                                                            toggleGroupSelection(this, groupId, checkbox.checked);
                                                            return;
                                                            }
                                                            }
                                                            // Allow expand/collapse behavior to continue
                                                            e.stopPropagation();">
                                                        </GroupClick>

 

function toggleGroupSelection(grid, groupId, checked) {
    var sm = grid.getSelectionModel();
    var store = grid.getStore();

    // Check if the group exists
    var group = store.getGroups().get(groupId);
    if (group) {
        var records = group.items;
        var indexes = records.map(function (record) {
            return store.indexOf(record);
        });
        if (checked) {
            sm.selectRange(indexes[0], indexes[indexes.length - 1], true);
        } else {
            sm.deselect(indexes);
        }

        // Call updateGroupCheckbox after updating selection
        updateGroupCheckbox(grid.getView(), groupId);
    }
}

function updateGroupCheckbox(view, groupId) {
    var sm = view.getSelectionModel();
    var store = view.getStore();
    var records = store.getGroups().get(groupId).items;
    var allSelected = records.every(function (record) {
        return sm.isSelected(record);
    });
    var checkbox = view.el.down('.x-grid-group-hd[data-groupname="' + groupId + '"] input[type=checkbox]');
    if (allSelected) {
        checkbox.dom.checked = true;
        checkbox.up('div').down('span').update('Remove All');
    } else {
        checkbox.dom.checked = false;
        checkbox.up('div').down('span').update('Add All');
    }
}

<td class="x-group-hd-container" colspan="2"><div data-groupname="Primary" class="x-grid-group-hd x-grid-group-hd-collapsible" nottabindex="0" hidefocus="on"><div class="x-grid-group-title" style="" data-qtip="Click to collapse. CTRL/click collapses all others"><div class="group-header"><input type="checkbox" id="Primary-checkbox" style="vertical-align: middle; margin-right: 5px;" data-tabindex-value="none" tabindex="-1" data-tabindex-counter="1"><span id="Primary-label">Select All</span></div></div></div></td>

actually this input type="checkbox" id="Primary-checkbox" should not have the expand and collapse behaviour but getting that behaviour.Below is the html code which i am trying to use to bind Add all in the group

<ext:GroupingSummary runat="server" ID="GroupingSummary1" EnableNoGroups="true" HideGroupedHeader="true" EnableGroupingMenu="false" StartCollapsed="true" GroupHeaderTplString='<div class="group-header"><input type="checkbox" id="{name}-checkbox" style="vertical-align: middle; margin-right: 5px;" /><span id="{name}-label">Add All</span></div>'></ext:GroupingSummary>


Answers (2)