Я не уверен, что это будет исправить все ваши проблемы, но в моем случае я использовать forceFitColumns
, а затем в зависимости, как я хочу, чтобы моя колонка реагировать размера я буду использовать комбинацию minWidth
и width
, а в некоторых если те, которые никогда не превысят определенной ширины, я тогда использовал бы и maxWidth
. Теперь проблема заключается в том, что при установке minWidth
то же самое, что и maxWidth
, это, конечно же, сделает его неуязвимым, подумайте об этом, вы установили минимум и максимум, SlickGrid уважает его, теперь он может его размер впоследствии. У меня также есть моя сетка, которая занимает 95% ширины моего экрана, поэтому у меня есть небольшое дополнение на стороне, и с ним я использую автоматическое изменение размера с помощью jQuery.
Вот мой код:
// HTML Grid Container
<div id="myGridContainer" style="width:95%;">
<div class="grid-header" style="width:100%">
<label>ECO: Log/Slickgrid</label>
<span style="float:right" class="ui-icon ui-icon-search" title="Toggle search panel" onclick="toggleFilterRow1()"></span>
</div>
<div id="myGrid" style="width:100%;height:600px;"></div>
<div id="myPager"></div>
</div>
// My SlickGrid Options
var options = {
enableCellNavigation: true,
forceFitColumns: true
};
// The browser auto-resize
$(window).resize(function() {
$("#myGrid").width($("myGridContainer").width());
$(".slick-viewport").width($("#myGrid").width());
grid.resizeCanvas();
});
EDIT
Я также был раздражен тем, что, используя все это вместе блокирует вас от изменения размера ширины колонки. Я пришел к другому решению, намного позже, что делает поля расширяться (приобретать ширину) и не блокирует вас после изменения размера. Таким образом, это новое решение, я считаю, дает вам именно то, что вы ищете ... Прежде всего удалите свойство maxWidth
и используйте только minWidth
и width
, на самом деле вы, вероятно, могли бы использовать только width
, если хотите. Теперь я должен был, к сожалению, изменить 1 из основного файла slick.grid.js
со следующим кодом:
//-- slick.grid.js --//
// on line 69 insert this code
autoExpandColumns: false,
// on line 1614 PREVIOUS CODE
if (options.forceFitColumns) {
autosizeColumns();
}
// on line 1614 change to this NEW CODE
if (options.forceFitColumns || options.autoExpandColumns) {
autosizeColumns();
}
затем вернуться к моему определению сетки, я заменить предыдущие варианты с этим:
// My NEW SlickGrid Options
var options = {
enableCellNavigation: true,
forceFitColumns: false, // make sure the force fit is false
autoExpandColumns: true // <-- our new property is now usable
};
с этим новое изменение имеет некоторую функциональность силовой подгонки (расширение), но не ограничивает вас при изменении размера столбцов после этого, как это делает сила.Я также тестировал его с помощью столбца Picker, если вы скрываете столбец, он соответствующим образом изменяет размер остальных. Я также изменил файл slick.columnpicker.js
, чтобы включить флажок для этого свойства, но это совершенно необязательно ... Я могу добавить код для этого, если кто-то из вас тоже этого захочет. Вуаля !!! :)
EDIT # 2
я понял гораздо позже, что нет необходимости изменять файл ядра, мы можем просто вызвать grid.autosizeColumns()
после создания сетки. Как это
var options = { forceFitColumns: false };
grid = new Slick.Grid("#myGrid", data, columns, options);
// will take available space only on first load
grid.autosizeColumns();
Это будет автоматически изменять размеры столбцов по размеру экрана на первой загрузки, но не даст вам ограничение forceFitcolumns
флага.
Спасибо - проблема я с этим в том, что с помощью forceFitColumns, столбцы будут расти в ширину, если они могут. Мне нужно, чтобы они оставались на своей заданной ширине, но последний пустой столбец растет, чтобы заполнить оставшееся пространство. –
Единственный способ, которым я могу это сделать, - сначала установить ширину min/max одинаково, а затем после рендеринга сетки установите для них значение null. Также - в событии изменения размера окна установите для параметра min/max значение ширины перед resizeCanvas, а затем снова уменьшите их. –
Я придумал другой подход, который работает точно так же, как я всегда хотел ... не более раздражающего ограничения ширины. – ghiscoding