2012-01-15 10 views
0

グリッドパネルを使用しています。私は、グリッド内の行を選択すると、私は次のような結果を得る:ExtJSポップアップウィンドウフォームデータロード

  • を私は「document.body」でフォームをレンダリングする場合は、すべてがOKで、フォーム フィールドが満たされています。
  • 私が同じフォームをウィンドウパネルで開始した場合、フォームフィールドは空です。
  • 両方を使用すると、 'document.body'にレンダリングされるFormは が閉じ、Windowのフォームフィールドが埋められます。

私は間違いを犯しています。

// 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

私は、コードに以下の変更を示唆している: '件名':TextFieldの(たとえば、IDにidプロパティを使用する代わりに

  1. を)、nameプロパティ(名前: 'subject')を使用
  2. グリッド上でrowselectイベントを処理しているので、選択したレコードをフォームpaもう一度ロードするのではなく、このような場合は、その後、私はときloadであることを考え出しフォームパネルにloadRecord()メソッドを呼び出し、それにレコードオブジェクトを渡した後、窓
0

でshow()メソッドを呼び出すことができますフォーム上で呼び出された場合、ExtJSはform domエレメントにアクセスしてフォームmethodを調べようとします。

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(); 
:ウィンドウはここ

は、第二の溶液のためのコードで示されたされた後

  1. フォームの設定に形成する
  2. ロードデータをmethodを追加します。私は2つのソリューションを見つけました