Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2016, 16:04
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

Передвинуть колонки внутри группы
Здравствуйте, как можно сдвинуть колонки внутри группы?
есть вот такая таблица http://joxi.ru/l2ZRRPPF83Eaz2
мне нужно менять местами группы колонок и колонки внутри групп. Группы двигать получается, делаю это примерно так:

var h = grid.headerCt;

h.move(i, 0);


а как менять местами колонки внутри группы? у меня выдается ошибка
Cannot read property 'isGroupHeader' of undefined


Использую Ext 6
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2016, 20:51
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Делать такие штуки не очень просто, но возможно. См. Ext.grid.header.DropZone.onNodeDrop(), там содержится логика обработки перемены мест колонок через drag'n'drop.
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2016, 21:00
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

Неужели дочерние колонки никак нельзя перемещать способом аналогичным перемещению групп?
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2016, 22:08
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Перемещать-то можно, но Grid, в зависимости от конфигурации, может состоять из трёх или более компонентов. Это выглядит он монолитно, а внутри вполне змеиное гнездо, в которое лазить надо осторожно и только если нет публичного API. А в данном случае я его не вижу.

Могу открыть feature request на эту тему, но шансы, что у Найджа дойдут до него руки в ближайшие N месяцев, стремятся к нулю.
Ответить с цитированием
  #5 (permalink)  
Старый 07.04.2016, 22:29
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Ха, а вот я и оказался неправ: спросил Найджа, он утверждает, что можно просто использовать обычные методы контейнера и всё должно просто работать.

Что-то типа такого:

Код:
var headerCt, columns;

headerCt = grid.getHeaderContainer();
columns = headerCt.getGridColumns();

// Вставить колонку №2 после колонки №4
headerCt.moveAfter(columns[1], columns[3]);

// Вставить колонку №3 перед колонкой №1
headerCt.moveBefore(columns[2], columns[0]);
Попробовал на одном из примеров под руками, вроде работает. :)
Ответить с цитированием
  #6 (permalink)  
Старый 08.04.2016, 09:50
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

работает но не совсем так как надо. Допустим это исходное положение колонок http://joxi.ru/GrqXXnnINObyjA

Я хочу поменять местами колонки в группе СМР. Вот что происходит в итоге http://joxi.ru/Vm6xx88hxkKzvA
т.е колонка поменялась местами с группой а не с соседней колонкой
Ответить с цитированием
  #7 (permalink)  
Старый 09.04.2016, 01:25
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Ок, значит я неправильно понял исходную задачу. В этом случае вам нужно делать всё то же самое, но на *групповой колонке* - она тоже контейнер.

Код:
var headerCt, groupColumn, innerColumns;

headerCt = grid.getHeaderContainer();
groupColumn = headerCt.down('[text="СМР-колонки"]');
innerColumns = groupColumn.getGridColumns();

groupColumn.moveAfter(innerColumns[0], innerColumns[1]);
Ответить с цитированием
  #8 (permalink)  
Старый 11.04.2016, 10:01
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

благодарю! буду тестить
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JqGrid - скрыть показать колонки kot_k_k jQuery 1 17.02.2016 11:56
Внутри разворачивающегося по клику DIVа не работают ссылки JavaScriptNoob Элементы интерфейса 2 17.11.2015 00:01
ng-repeat внутри ng-repeat cartrege Angular.js 1 24.10.2013 14:25
Как получить доступ к функциям внутри $(document).ready ? oleg_barma jQuery 3 05.06.2012 20:56
Не совсем обычный фрейм и выезжающий текст при наводе на картинку. amaz245 Элементы интерфейса 35 25.12.2010 17:29