16.10.2014, 08:51
|
Новичок на форуме
|
|
Регистрация: 16.10.2014
Сообщений: 6
|
|
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:'Нижний тулбар'}],
});
});
|
|
16.10.2014, 11:22
|
|
Профессор
|
|
Регистрация: 06.06.2014
Сообщений: 292
|
|
Например, использовать в окне card layout и переключаться на нужную карту по кнопке.
|
|
16.10.2014, 12:28
|
Новичок на форуме
|
|
Регистрация: 16.10.2014
Сообщений: 6
|
|
как в layout засунуть grid?
|
|
16.10.2014, 13:03
|
Новичок на форуме
|
|
Регистрация: 16.10.2014
Сообщений: 6
|
|
С этим разобрался
layout: 'card',
items:
[
{xtype: 'panel',html: ''},
{xtype: 'panel', items:[grid1]},
{xtype: 'panel',html: '3'},
],
Как теперь переключаться между нужными слайдами?
|
|
16.10.2014, 14:30
|
Новичок на форуме
|
|
Регистрация: 16.10.2014
Сообщений: 6
|
|
Огромное Вам спасибо! У меня все получилось.
Вот кусок кода:
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')}},
|
|
16.10.2014, 17:46
|
|
Профессор
|
|
Регистрация: 06.06.2014
Сообщений: 292
|
|
Мне кажется, у вас есть избыточная вложенность. Вместо
{id:'1', xtype:'panel', items:[grid1]}
можно просто написать grid1:
{id:'0', xtype:'panel', html: '0'},
grid1,
{id:'2', xtype:'panel', html: '2'}
Еще момент - рекомендуется юзать itemtId вместо id если данный компонент не должен быть доступен глобально по всему приложению. А если таки должен, то с большой вероятностью у вас проблема с архитектурой.
|
|
17.10.2014, 08:14
|
Новичок на форуме
|
|
Регистрация: 16.10.2014
Сообщений: 6
|
|
Сообщение от Infarch
|
можно просто написать grid1:
|
Просто grid1 не заработало, к сожалению
Сообщение от Infarch
|
Еще момент - рекомендуется юзать itemtId вместо id
|
c itemid тоже не работает.
|
|
17.10.2014, 14:53
|
|
Профессор
|
|
Регистрация: 06.06.2014
Сообщений: 292
|
|
А что именно не заработало? Рискну предположить что при создании грида вы не описали его айди, и теперь не можете его активировать: win1.getLayout().setActiveItem('1'). Напишите тогда в нем itemId: 1. Или не создавайте грид где то в другом месте, используйте конфиг по полной программе:
{id:'0', xtype:'panel', html: '0'},
{itemId: "1", xtype:"gridpanel", ...},
{id:'2', xtype:'panel', html: '2'}
|
|
20.10.2014, 08:41
|
Новичок на форуме
|
|
Регистрация: 16.10.2014
Сообщений: 6
|
|
Да вы были абсолютно правы, я не присвоил itemId и grid1 стал вызываться, благодарю за помощь.
|
|
|
|