2012-01-15 110 views
0

我使用Grid面板。当我选择在网格中的行我得到如下结果:ExtJS弹出窗口窗体数据加载

  • 如果我呈现的形式,“document.body的”一切正常,并形成 字段填写。
  • 如果我在窗口面板中启动了相同的窗体,则表单字段为空。
  • 当我同时使用时,在'document.body'中呈现的表格被关闭,并且窗口中的表单字段被填充。

我在哪里犯错。

// Grip panel part 
sm: new Ext.grid.RowSelectionModel({ 
     singleSelect: true, 
     listeners: { 
        rowselect: function(sm, index, record) {deleteWindow.show();} 
        } 
     }) 
// End Grid panel part  

var myForm = new Ext.form.FormPanel({ 
     title:"Basic Form", 
     width:425, 
     frame:true, 
     items: [ 
      new Ext.form.TextField({ 
       id:"to", 
       fieldLabel:"To", 
       width:275, 
       allowBlank:false, 
       blankText:"Please enter a to address", 
        readOnly: true 
      }), 
      new Ext.form.TextField({ 
       id:"subject", 
       fieldLabel:"Subject", 
       width:275, 
       allowBlank:false, 
       blankText:"Please enter a subject address", 
       readOnly: true 
      }), 
     ], 
     buttons: [ 
      {text:"Cancel"}, 
      {text:"Save"} 
     ] 
    }); 

var deleteWindow = new Ext.Window({ 
     id: 'id_deleteWindow', 
     title: 'Delete', 
     closable:true, 
     width: 750, 
     height:  380, 
     plain:true, 
     layout: 'fit', 
     items: myForm 
}); 

var id_test = 2; // This is only for this problem 

//myForm.render(document.body); // When using this code everything is ok, and form fields are filled 


myForm.getForm().load({ 
       url:'ggg.php', 
       params:{ 
         id: id_test 
         } 
}); 

JSON数据

{success:true,results:[{"id_test":"1","to":"a","subject":"aa"}]} 

回答

0

我建议如下修改代码:

  1. 在地方使用的文本字段的id属性(比如中,ID: '主体' ),使用名称属性(名称:'主题')
  2. 只是好奇....因为您正在处理网格上的rowselect事件,您可能希望加载选定的记录在窗体pa nel而不是再次加载它。如果是这样的话,那么你可以调用形式面板上的loadRecord()方法和记录对象传递给它,然后调用show()方法的窗口
0

我想通了,当load是ExtJS尝试访问form dom元素以确定表单method。我发现2个解决方案:

  1. 添加method到窗体配置
  2. 加载数据,形成窗口显示

这里是第二个解决方案代码之后:

var deleteWindow = new Ext.Window({ 
    id: 'id_deleteWindow', 
    title: 'Delete', 
    closable:true, 
    width: 750, 
    height:  380, 
    plain:true, 
    layout: 'fit', 
    items: myForm, 
    listeners: { 
     show: function() { 
      var form = this.items.get(0); 
      form.getForm().load({ 
       url:'ggg.php', 
       params:{ 
        id: id_test 
       } 
      }); 
     } 
    } 
}); 
deleteWindow.show();