2015-05-01 129 views
3

enter image description here无法正常显示

我使用jQuery的手风琴,每当页面刷新和手风琴内slickgrid Slickgrid内jQuery的手风琴列被扩大了网格内的列都失灵和破坏。我试过用

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(); 
      } 
     }); 

这也没有工作不幸尝试。

+2

尝试使'网格'数组。 'var grid = [grid1,grid2,grid3];'然后访问它们像'grid [0] .resizeCanvas();' –

+0

尝试,目前没有任何成功。当您关闭手风琴时,所有列在关闭动画完成之前重新组织。 –

+0

手风琴上有'afterActivate'功能吗?通常情况下,容器div需要可见并具有网格占用的高度。 – Edward

回答

1

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

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

3

它看起来像“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; 

等..让我知道这是否有助于

+0

非常好的主意,但没有产生结果。 –