jquery 手风琴列中的 Slickgrid 无法正确显示

Slickgrid inside jquery accordion columns not displaying properly

我在 jquery 手风琴内部使用 slickgrid,每当页面刷新和手风琴展开时,网格内的列都会乱序并被破坏。我尝试使用

 grid.resizeCanvas();

在我的手风琴里面无济于事。

这是我的代码。

  var grid = (grid1, grid2, grid3);
        $('#accordion').accordion({
            collapsible: true,

            beforeActivate: function (event, ui) {
                grid.resizeCanvas();
                // The accordion believes a panel is being opened
                if (ui.newHeader[0]) {
                    var currHeader = ui.newHeader;
                    var currContent = currHeader.next('.ui-accordion-content');
                    // The accordion believes a panel is being closed
                } else {
                    var currHeader = ui.oldHeader;
                    var currContent = currHeader.next('.ui-accordion-content');
                }



                // Since we've changed the default behavior, this detects the actual status
                var isPanelSelected = currHeader.attr('aria-selected') == 'true';

                // Toggle the panel's header
                currHeader.toggleClass('ui-corner-all', isPanelSelected).toggleClass('accordion-header-active ui-state-active ui-corner-top', !isPanelSelected).attr('aria-selected', ((!isPanelSelected).toString()));

                // Toggle the panel's icon
                currHeader.children('.ui-icon').toggleClass('ui-icon-triangle-1-e', isPanelSelected).toggleClass('ui-icon-triangle-1-s', !isPanelSelected);

                // Toggle the panel's content

                currContent.toggleClass('accordion-content-active', !isPanelSelected)
                if (isPanelSelected) { currContent.slideUp(); } else { currContent.slideDown(); }

                return false; // Cancels the default action

            }
        });

更新 我试过使用

 var grid = [grid1, grid2, grid3];
   $("#accordion").accordion({
            afterActivate: function (event, ui) {
                grid[0].resizeCanvas();
            }
        });

不幸的是,这也没有奏效。

看起来 "resizeCanvas()" 方法没有影响列。 我讨厌这样做,但尝试再次遍历列并调整它们的大小,让我知道这是否适合你: 示例

    var grid = [grid1, grid2, grid3];
   $("#accordion").accordion({
            afterActivate: function (event, ui) {
                var cols = grid[0].getColumns();
                cols[0].width = 120; 
                grid[0].setColumns(cols);`
            }
        });

您不必像我一样遍历各列。你知道列名和大小,所以你可以这样做

cols["Policy Type"].width = 120;

等等..如果有帮助请告诉我

我使用 window.location.reload(),当页面重新加载时,网格列按预期对齐。我尝试在递归方法调用中执行此操作而不是重新加载页面并遇到了您描述的问题。

如果您可以刷新页面而不是进行递归调用,那么问题就解决了。