Панель Extjs Grid — скрыть столбец с помощью hideable=false

я использую панель сетки Extjs 4.1.

я ищу способ скрыть столбец из сетки. я могу использовать setHidden, но тогда пользователь может снова «показать» столбец из меню в заголовке столбца. кажется, что скрытое свойство просто не сокращает его ...


person danfromisrael    schedule 18.10.2012    source источник


Ответы (5)


В порядке. В конце концов я сделал это: в событии "afterrender" сетки:

var header = pnl.down("headercontainer");
if(header != null && header["getMenu"] != null)
{
   var menu=header.getMenu();
   menu.on('beforeshow',function(sender,eOpts){

            var menu=sender;
            if(!menu.items.containsKey("columnItem"))
            {
                return;
            }

            var columnsSubMenuItem=menu.items.getByKey("columnItem");
            var columnsCheckboxes=columnsSubMenuItem.menu.items["items"];

            // More code here...
            // See the pseudo code
   });
}

теперь я просто перебирал столбцы, и если checkbox.text == column.get_Title() && column.get_Hideable() == true, то checkbox.Show() else checkbox.Hide();

(извините за псевдокод, я работаю с Sharpkit, который представляет собой конвертер C # в javascript, поэтому, если бы я скопировал код, его было бы сложнее объяснить.

Примечание: вы можете сделать то же самое с событием enableColumnHide сетки.

person danfromisrael    schedule 15.11.2012

используйте следующую конфигурацию для столбца

hidden: true, hideable: false

'grid.headerCt.getGridColumns()'

используйте вышеуказанный метод, чтобы получить весь столбец сетки, и используйте hide() и show(), чтобы показать конкретный столбец

Это будет работать на Ext js 4.1.

person Sudarshan    schedule 04.03.2013

Вы можете настроить свойство columns в методе initComponent и вставить только необходимые столбцы в массив this.columns.

person mik    schedule 18.10.2012
comment
я хочу использовать все свои столбцы в разных ситуациях. поэтому мне нужна возможность скрыть столбец в определенных условиях, и у пользователя не должно быть возможности снова его отобразить. - person danfromisrael; 18.10.2012

Перенастройте сетку для каждого сценария. Ссылка на API подсказка

person Varun Achar    schedule 18.10.2012
comment
это интересно. Могу ли я применить новый набор конфигураций к сетке с помощью этого метода даже ПОСЛЕ того, как сетка была визуализирована? - person danfromisrael; 15.11.2012
comment
Да, ты можешь. Прочитайте документы для метода перенастройки. Он принимает 2 параметра, хранилище и массив столбцов. - person Varun Achar; 16.11.2012

Я использую setVisible(false | true) для столбца. документ

person sunny    schedule 25.10.2012