Подтвердить что ты не робот

Как авторизовать столбец в SlickGrid?

Я хочу, чтобы slickgrid автоматически сортировал столбцы на основе самого широкого содержимого или текста заголовка - в зависимости от того, что больше. Проще говоря, я хочу, чтобы он моделировал поведение стандартных таблиц HTML по умолчанию, когда дело доходило до размера столбцов. Как это сделать в slickgrid?

4b9b3361

Ответ 1

При построении своих опций вы можете использовать forceFitColumns: true

var options = {
    enableCellNavigation: true,
    forceFitColumns: true
};

Это заставит столбцы заполнить всю ширину вашего разделителя сетки.

Ответ 2

OP ищет столбцы для роста, чтобы соответствовать их контенту. grid.autosizeColumns() вырабатывает ячейки в соответствии с родительским контейнером, что не то же самое.

Я добавил эту функцию, и это примерно так, как вы можете себе представить. Вы просматриваете отображаемые ячейки и измеряете их, сохраняя самую большую ячейку и используя эту ширину, чтобы задать ширину столбца. SlickGrid дает вам хороший доступ к ячейкам в окне просмотра, поэтому это прекрасно работает.

Алгоритм измерения - ваше большое решение. Вы можете поместить контент с экрана и измерить его, как предлагает @jay. Это работает, но это самый медленный метод, так как он требует перерисовки для вставки и перерисовки при удалении. Могут быть способы оптимизации. Решение, с которым я столкнулся, - это измерение ширины каждой буквы в алфавите, а также других символов, с которыми мы сталкиваемся, и суммирование их для создания ширины. Да, это звучит абсурдно. У него много ограничений: размер шрифта должен быть одинаковым, он не поддерживает образы, не может быть никаких строк и т.д. Однако, если вы можете жить с ограничениями, вы можете рассчитать размеры для огромного видового экрана сетки в <5ms, потому что ширина символов измеряется только один раз.

После того, как вы получите размеры столбцов, вы назначаете их столбцам с помощью grid.setColumns().

Ответ 3

Я добавил это после того, как сетка нарисована, и она отлично работает.

$(window).resize(function() {
var cols = grid.getColumns();
grid.setColumns(cols);
})

Ответ 4

Slickgrid не будет поддерживать автоматический размер столбца на основе данных. Вам нужно написать плагин или переделать ядро ​​slickgrid для изменения.

Вот ссылка, которую я создал плагин для работы с автоматическим размером slickgrid https://github.com/naresh-n/slickgrid-column-data-autosize

Ответ 5

Вы должны иметь возможность вызвать метод autosizeColumns() объекта сетки.

grid.autosizeColumns();

Ответ 6

Сделайте эту простую настройку для Naresh https://github.com/naresh-n/slickgrid-column-data-autosize в функции init:

  • Добавить $container.ready(resizeAllColumns); в функцию init.

Это гарантирует автоматическое определение столбцов при начальной загрузке

Ответ 7

Вставьте текст в элемент вне экрана и извлеките ширину элемента. Это то, что делает excanvas для измерения текста. Используйте это, чтобы задать ширину столбца, так как он ожидает значение пикселя.