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