ExtJS4: использовать панель, окно или контейнер?

Я работаю над приложением, где мне нужно разработать следующие экраны:

  1. Добавить экран для приема пользовательского ввода (панель формы)
  2. Экран просмотра сведений для отображения пользовательского ввода (панель сетки)
  3. Редактировать экран для редактирования пользовательского ввода (не уверен, что это должна быть форма или окно).

У меня есть прослушиватель itemdblclick для панели сетки... поэтому, когда пользователь дважды щелкает строку сетки, экран редактирования должен открываться с деталями, заполненными в полях.

Я хочу использовать общий класс для экранов добавления и редактирования, но проблема в том, что если я расширяю окно, появляется экран редактирования, но не экран добавления. В то время как если я расширяю панель, то открывается экран добавления, но экран редактирования не появляется..

Ext.define('ELM.view.cl.Edit',{                   
extend:'Ext.window.Window',
...

Ext.define('ELM.view.cl.Edit',{
extend : 'Ext.form.Panel',
...

Примечание. У меня есть панель вкладок, на которой я добавляю экран добавления и просмотра как разные вкладки, тогда как экран редактирования — это просто окно.

Насколько я знаю, вероятно, панель вкладок не может иметь окно в качестве дочернего компонента.

Скажите, пожалуйста, что здесь не так? Должен ли я вместо этого расширить «контейнер» и указать «formpanel» и «window» в другом месте. ? Как мне выполнить мое требование? Любые ссылки помогут..

заранее спасибо


person user777777    schedule 17.10.2014    source источник
comment
Можете ли вы поделиться своим кодом, чтобы я мог понять, что там происходит на самом деле? Позвольте мне увидеть обработчик события itemdblclick и определения вашего класса для «ELM.view.cl.Edit».   -  person Guilherme Lopes    schedule 17.10.2014
comment
Для максимального повторного использования вы можете создать класс, который является панелью формы. Затем вы можете использовать это как для добавления, так и для редактирования экранов. В качестве панели форму можно добавить как элемент окна, вкладку панели вкладок, дочерний элемент другой панели и т. д.   -  person existdissolve    schedule 17.10.2014


Ответы (1)


Я решил эту проблему, определив форму, расширяющую панель формы:

Ext.define('ELM.view.cl.Edit',{
extend : 'Ext.form.Panel',
alias: 'widget.cledit',
...

а затем отобразить форму в окне редактирования. Я создаю новое окно, а затем добавляю только что созданную панель формы в качестве дочернего элемента окна. Вот так,

 Ext.define('ELM.view.cl.EditWindow',{                   
    extend:'Ext.window.Window',
   items: [
          {
             xtype: 'cledit'
          }
         ]
});

Надеюсь, это может помочь кому-то :)

person user777777    schedule 31.10.2014