Window с разным содержимым
Прошу помощи. Есть окно window у которого есть панель управления. Как сделать так чтобы по нажатию кнопки на панели в окне открылась таблица? А если таблиц несколько нужно показывать при нажатии на разные кнопки в тулбаре как быть?
код приложения: Ext.onReady(function() { /**********************/ /* Таблица Сотрудники */ /**********************/ var store = Ext.create('Ext.data.JsonStore', { fields:['id','F','I','O','Job'], PageSize:10, autoLoad: true, proxy: { type:'ajax', url:'php2.php?func=1', reader: { type: 'json', root: 'table' } } }); var grid1 = Ext.create('Ext.grid.Panel', { title: 'Справочник сотрудников', store: store, columns: [ {text:'№', dataIndex:'id', width:50}, {text:'Фамилия', dataIndex:'F', width:150}, {text:'Имя', dataIndex:'I', width: 150}, {text:'Отчество', dataIndex:'O', width: 150}, {text:'Подразделение', dataIndex:'Job', width: 350}, ], /* Нижний тулбар таблицы*/ bbar: new Ext.PagingToolbar( { store: store, displayInfo: true, displayMsg: 'Показано {0} - {1} из {2}' }) }); /***************************/ /* Главное окно приложения */ /***************************/ var win1 = Ext.create('widget.window', { title:'Рыжая база v.1.0b', html:'', autoShow:true, closable:false, resizable:false, draggable:false, maximized:true, layout: 'border', //items:[{region: 'north',xtype: 'panel',html: 'North',height:'100%',items[grid1]}], tbar: [ {text:'Регистрация', handler: function(){alert('Функция пока не работает')}},'-', {text:'Справочники', menu: [ {text: 'Сторонние организации', handler: function(){win1.update(win1.items.html = grid1)}}, {text: 'Сотрудники', handler: function(){win1.update(html='1')}}, {text: 'Исполнители', handler: function(){alert('Функция пока не работает')}}, {text: 'Местонахождения', handler: function(){alert('Функция пока не работает')}}, {text: 'Носители', handler: function(){alert('Функция пока не работает')}}, {text: 'Типы документов', handler: function(){alert('Функция пока не работает')}}, {text: 'Наименования внутренних документов', handler: function(){alert('Функция пока не работает')}}, {text: 'На кого распространяются', handler: function(){alert('Функция пока не работает')}} ] },'-', {text:'Выбор организации', handler: function(){alert('Функция пока не работает')}},'-', {text:'Сервис', menu: [ {text: 'Экспорт журналов в MS Excel', handler: function(){alert('Функция пока не работает')}}, {text: 'Организации', handler: function(){alert('Функция пока не работает')}}, {text: 'Пользователи', handler: function(){alert('Функция пока не работает')}}, {text: 'О Программе', handler: function(){alert('Программа разработана сотрудниками сектора программного обеспечения ')}} ] },'-', {text:'Выход', handler: function(){alert('Если вы хотите выйти то просто закройте браузер :-))')}} ], bbar:[{text:'Нижний тулбар'}], }); }); |
Например, использовать в окне card layout и переключаться на нужную карту по кнопке.
|
как в layout засунуть grid?
|
С этим разобрался
layout: 'card', items: [ {xtype: 'panel',html: ''}, {xtype: 'panel', items:[grid1]}, {xtype: 'panel',html: '3'}, ], Как теперь переключаться между нужными слайдами? |
вот неплохой пример:
http://docs.sencha.com/extjs/4.2.2/e...t-browser.html panel.getLayout().setActiveItem(item); |
Огромное Вам спасибо! У меня все получилось.
Вот кусок кода: layout: 'card', activeItem: 0, items: [ {id:'0', xtype:'panel', html: '0'}, {id:'1', xtype:'panel', items:[grid1]}, {id:'2', xtype:'panel', html: '2'}, ], tbar: [ {text:'Регистрация', handler: function(){alert('Функция пока не работает')}},'-', {text:'Справочники', menu: [ {text: 'Сторонние организации', handler: function(){win1.getLayout().setActiveItem('1')}}, {text: 'Сотрудники', handler: function(){win1.getLayout().setActiveItem('2')}}, {text: 'Исполнители', handler: function(){win1.getLayout().setActiveItem('0')}}, |
Мне кажется, у вас есть избыточная вложенность. Вместо
{id:'1', xtype:'panel', items:[grid1]} можно просто написать grid1: {id:'0', xtype:'panel', html: '0'}, grid1, {id:'2', xtype:'panel', html: '2'} Еще момент - рекомендуется юзать itemtId вместо id если данный компонент не должен быть доступен глобально по всему приложению. А если таки должен, то с большой вероятностью у вас проблема с архитектурой. |
Цитата:
Цитата:
|
А что именно не заработало? Рискну предположить что при создании грида вы не описали его айди, и теперь не можете его активировать: win1.getLayout().setActiveItem('1'). Напишите тогда в нем itemId: 1. Или не создавайте грид где то в другом месте, используйте конфиг по полной программе:
{id:'0', xtype:'panel', html: '0'}, {itemId: "1", xtype:"gridpanel", ...}, {id:'2', xtype:'panel', html: '2'} |
Да вы были абсолютно правы, я не присвоил itemId и grid1 стал вызываться, благодарю за помощь.
|
Часовой пояс GMT +3, время: 13:35. |