grid: Программное изменение ширины колонки
Подглядев код http://docs.sencha.com/extjs/6.2.0/c...eaderResize r
я узнал, чтобы изменить ширину колонки недостаточно вызова метода Ext.grid.column.Column.setWidth() нужно отменить свойство flex этой колонки. А делается это при помощи следующего хака: delete column.flex; В документации об этом ни слова. Там вообще такого свойства как flex нет. Вопрос: Как обойтись без хака? П.С. Изменение ширины мне потребовалось чтобы сделать синхронизацию внешнего вида двух таблиц (размеры колонок, расположение колонок, видимость колонок и прочее). |
Цитата:
|
Спасибо за ответ!
Не ясно как делать reconfigure. Я сделал плагин columnSync, который подключаю к этим таблицам. Но в таблицах колонки могут иметь очень сложные настройки (всякие actions, references, renderer связанные с контроллером вида, байдинги и прочее). Не говоря о колонках, которые генерируются динамически. В итоге, как на основе имеющейся таблицы вытащить исходные конфиги колонок, да так чтобы все это хозяйство не порушилось, ума не приложу. |
Изначальный конфиг вытащить легко, он хранится на всех компонентах в свойстве initialConfig. Но это именно изначальный конфиг, использованный в момент создания компонента конструктором. Если какие-либо свойства изменялись впоследствии, то в initialConfig они, конечно, не попадут.
В вашем случае reconfigure может быть слишком накладно, поэтому лучше всё же менять ширину на существующих колонках. Вы их как изначально конфигурируете, с фиксированной шириной? Если её нет в конфиге, то ColumnLayout будет пытаться считать сам, и свойство flex служит ему индикатором, какие колонки считать, а какие нет. |
flex слишком удобный способ задания ширины, от него сложно отказаться. Поэтому конечно некоторые колонки с flex
Так что я делаю вывод что придется удалять свойство flex перед изменением ширины. Тем более что это подсмотрено в исходниках extjs |
В таком случае хак скорее оправдан, чем нет. Я не вижу в нашем коде поддержку для таких случаев, когда колонки сперва определяют ширину динамически через flex, а потом внезапно становятся фиксированной ширины.
В таких случаях я обычно оставляю комментарий, чтобы потом ответить на закономерный WTF. :) |
Цитата:
Это не удобно, ибо хотелось бы чтобы значение flex корректировалось (мышкой). Потом при изменения ширины таблицы появляется либо горизонтальная прокрутка либо пустое место справа - и все это из-за того, что ширины колонок фиксированные. В итоге в коде сенчи собственно хак и используется. Которым придется воспользоваться. Спасибо за ответы! |
Часовой пояс GMT +3, время: 06:33. |