я использую панель сетки Extjs 4.1.
я ищу способ скрыть столбец из сетки. я могу использовать setHidden, но тогда пользователь может снова «показать» столбец из меню в заголовке столбца. кажется, что скрытое свойство просто не сокращает его ...
я использую панель сетки Extjs 4.1.
я ищу способ скрыть столбец из сетки. я могу использовать setHidden, но тогда пользователь может снова «показать» столбец из меню в заголовке столбца. кажется, что скрытое свойство просто не сокращает его ...
В порядке. В конце концов я сделал это: в событии "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 сетки.
используйте следующую конфигурацию для столбца
hidden: true,
hideable: false
'grid.headerCt.getGridColumns()'
используйте вышеуказанный метод, чтобы получить весь столбец сетки, и используйте hide() и show(), чтобы показать конкретный столбец
Это будет работать на Ext js 4.1.Вы можете настроить свойство columns в методе initComponent и вставить только необходимые столбцы в массив this.columns.
Перенастройте сетку для каждого сценария. Ссылка на API подсказка