free-jqgrid: скрыть/показать влияние столбца на замороженный столбец?

У меня есть jqgrid с двумя замороженными столбцами. Frozen работает нормально, если я ничего не делаю. После того, как я скрою/покажу другие столбцы (не замороженные столбцы), замороженные не работают.

Я использую бесплатную версию jqGrid 4.14.0.

Я не знаю, что случилось.

Может кто-нибудь помочь мне! Заранее спасибо..


person Tommy1209    schedule 21.03.2017    source источник
comment
Не могли бы вы точнее описать проблему? Как вы скрываете/показываете столбцы? Вы используете columnChooser или напрямую вызываете showCol, hideCol, showHideCol? Что вы имеете в виду, что замороженные не работают? Что именно не работает? Неизменна ли высота/ширина замороженных столбцов? Лучше предоставить демонстрацию, которая может быть использована для воспроизведения проблемы.   -  person Oleg    schedule 21.03.2017
comment
@Олег, спасибо за быстрый ответ, я использую hideCol. После скрытия столбцов столбцы, замороженные до того, как они не заблокированы, и их высота/ширина не изменились   -  person Tommy1209    schedule 21.03.2017


Ответы (1)


Если вы используете низкоуровневые методы showCol, hideCol, showHideCol напрямую, то вы должны сами выбрать, какой из двух способов решения обеспечивает наилучшую производительность в вашем случае.

Отображение/скрытие столбцов происходит относительно медленно, потому что необходимо просмотреть все строки сетки, заголовки столбцов (включая панель инструментов фильтра) и изменить встроенный стиль CSS в соответствующих ячейках (свойство display должно быть установлен на none или значение none должно быть удалено). После этого с и высота сетки также могут быть изменены. Если в сетке есть замороженные столбцы, то то же самое нужно сделать и в замороженных погружениях. Кроме того, необходимо пересчитать ширину и высоту замороженных погружений, а также пересчитать высоту каждого ряда замороженных столбцов.

Таким образом, у человека есть две альтернативы:

  1. скрыть/показать все столбцы, которые вам нужны, вызовами showCol, hideCol, showHideCol, а затем вызвать событие jqGridResetFrozenHeights в сетке, чтобы принудительно пересчитать все свойства ширины/высоты замороженных погружений
  2. уничтожить замороженные столбцы вызовом destroyFrozenColumns, применить скрытие/отображение столбцов вызовом showCol, hideCol, showHideCol и повторно создать замороженные столбцы вызовом setFrozenColumns.

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

person Oleg    schedule 21.03.2017