2012-01-15 107 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();