| 
	| 
	
	| 
		
	| 
			
			 
			
				25.12.2016, 04:30
			
			
			
		 |  
	| 
		
			|  | Соединяю Node.js и Ext JS       |  | 
					Регистрация: 25.06.2009 
						Сообщений: 1,033
					 
		
 |  |  
	| 
				grid: Программное изменение ширины колонки
			 Подглядев код http://docs.sencha.com/extjs/6.2.0/c...eaderResize  r 
я узнал, чтобы изменить ширину колонки недостаточно вызова метода
 
Ext.grid.column.Column.setWidth()
 
нужно отменить свойство flex этой колонки. 
А делается это при помощи следующего хака:
 
delete column.flex;
 
В документации об этом ни слова. Там вообще такого свойства как flex нет.
 
Вопрос:
 
Как обойтись без хака?
 
П.С. Изменение ширины мне потребовалось чтобы сделать синхронизацию внешнего вида двух таблиц (размеры колонок, расположение колонок, видимость колонок и прочее).
				__________________Хусамов Сухроб, Москва, khusamov@yandex.ru Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
 |  |  
	| 
		
	| 
			
			 
			
				03.01.2017, 22:03
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 21.05.2015 
						Сообщений: 321
					 
		
 |  |  
	| 
	
 
	| Сообщение от khusamov   |  
	| Вопрос: 
 Как обойтись без хака?
 |  
	
 Ответ: использовать метод reconfigure , передавая ему массив с конфигурацией колонок, включающей фиксированную ширину. |  |  
	| 
		
	| 
			
			 
			
				04.01.2017, 17:23
			
			
			
		 |  
	| 
		
			|  | Соединяю Node.js и Ext JS       |  | 
					Регистрация: 25.06.2009 
						Сообщений: 1,033
					 
		
 |  |  
	| Спасибо за ответ!Не ясно как делать reconfigure.
 
 Я сделал плагин columnSync, который подключаю к этим таблицам.
 
 Но в таблицах колонки могут иметь очень сложные настройки (всякие actions, references, renderer связанные с контроллером вида, байдинги и прочее). Не говоря о колонках, которые генерируются динамически.
 
 В итоге, как на основе имеющейся таблицы вытащить исходные конфиги колонок, да так чтобы все это хозяйство не порушилось, ума не приложу.
 
				__________________Хусамов Сухроб, Москва, khusamov@yandex.ru Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
 |  |  
	| 
		
	| 
			
			 
			
				09.01.2017, 23:42
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 21.05.2015 
						Сообщений: 321
					 
		
 |  |  
	| Изначальный конфиг вытащить легко, он хранится на всех компонентах в свойстве initialConfig. Но это именно изначальный конфиг, использованный в момент создания компонента конструктором. Если какие-либо свойства изменялись впоследствии, то в initialConfig они, конечно, не попадут.
 В вашем случае reconfigure может быть слишком накладно, поэтому лучше всё же менять ширину на существующих колонках. Вы их как изначально конфигурируете, с фиксированной шириной? Если её нет в конфиге, то ColumnLayout будет пытаться считать сам, и свойство flex служит ему индикатором, какие колонки считать, а какие нет.
 |  |  
	| 
		
	| 
			
			 
			
				10.01.2017, 13:52
			
			
			
		 |  
	| 
		
			|  | Соединяю Node.js и Ext JS       |  | 
					Регистрация: 25.06.2009 
						Сообщений: 1,033
					 
		
 |  |  
	| flex слишком удобный способ задания ширины, от него сложно отказаться. Поэтому конечно некоторые колонки с flex
 Так что я делаю вывод что придется удалять свойство flex перед изменением ширины. Тем более что это подсмотрено в исходниках extjs
 
				__________________Хусамов Сухроб, Москва, khusamov@yandex.ru Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2017, 21:50
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 21.05.2015 
						Сообщений: 321
					 
		
 |  |  
	| В таком случае хак скорее оправдан, чем нет. Я не вижу в нашем коде поддержку для таких случаев, когда колонки сперва определяют ширину динамически через flex, а потом внезапно становятся фиксированной ширины.
 В таких случаях я обычно оставляю комментарий, чтобы потом ответить на закономерный WTF. :)
 |  |  
	| 
		
	| 
			
			 
			
				13.01.2017, 16:27
			
			
			
		 |  
	| 
		
			|  | Соединяю Node.js и Ext JS       |  | 
					Регистрация: 25.06.2009 
						Сообщений: 1,033
					 
		
 |  |  
	| 
	
 
	| Цитата: |  
	| ... не вижу в нашем коде поддержку для таких случаев, когда колонки сперва определяют ширину динамически через flex, а потом внезапно становятся фиксированной ширины |  
	
 Так то оно так, конечно, но если создать грид с flex-колонками, а потом мышкой менять размеры колонок, то flex удаляется, а колонки становятся фиксированной ширины. 
 
Это не удобно, ибо хотелось бы чтобы значение flex корректировалось (мышкой). Потом при изменения ширины таблицы появляется либо горизонтальная прокрутка либо пустое место справа - и все это из-за того, что ширины колонок фиксированные.
 
В итоге в коде сенчи собственно хак и используется. Которым придется воспользоваться.
 
Спасибо за ответы!
				__________________Хусамов Сухроб, Москва, khusamov@yandex.ru Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
 |  |  |  |