我在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();
}
});
不幸的是,这也没有奏效。
答案 0 :(得分: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;
等等..如果有帮助,请告诉我
答案 1 :(得分:1)
我使用window.location.reload()
,当重新加载页面时,网格列按预期对齐。我尝试在递归方法调用中执行此操作,而不是重新加载页面并遇到您描述的问题。
如果您可以刷新页面而不是进行递归调用,那么这将解决问题。