2012-04-19 11 views
2

EXTJS 4.0.7 gplを使用しています。私はform/form-grid.jsの下の例を使って作業しています。フォームに表示されているエントリを編集した後、この例でグリッドをリロードします。フォーム/ form-grid.jsでEXTJS4の例を使用する - 送信フォームの後にグリッドをリロードする方法

PHP Webサービスを使用してフォームグリッドにデータをロードしています。私は、編集を行うときにフォームエントリを処理し、グリッドの値を更新するハンドラを設定しています。それは正常に動作し、データベースを更新します。成功すると、私は店舗のリロードを呼び出し、以下の関数呼び出しを使用してJSONがリロード(FireBug)に戻るのを見ますが、データはグリッドに読み込まれません。ストアの負荷から戻ってきたデータをグリッドに書き込んで更新する方法。

最終的にはMVCを使用したいと思いますが、今のところ私はform.submit successでフォームグリッドのグリッドをリロードすることができます。

私は私の店で「tvdStore」の「storeId」を持っていると私は使用して店のリロードを実行します、私はJSONをグリッドにロードされなければならないのFirebugに戻ってきて見

{ 
    xtype: 'button', 
    text: 'Save', 
    style: 'margin: 0 5px 0 5px', 
     handler: function (button) { 

     // when this button is clicked, sumbit this form 
     var form = this.up('form').getForm(); 

     var rating = form.findField("rating").getValue(); 
     var formTargetId = form.findField("ID").getValue(); 
     var formFamilyName = form.findField("FAMILYNAME").getValue(); 
     var formTargetName = form.findField("TARGETNAME").getValue(); 
     var formTableName = form.findField("TABLENAME").getValue(); 

     // convert the int value back to a string 
     var stringVal = ""; 
     if (rating === true) { 
      stringVal = 'Yes'; 
     } else if (rating === false) { 
      stringVal = 'No'; 
     } 

     form.submit({ 
      waitMsg: 'Saving...',  // Wait Message 
      method: 'POST', 
      params: { 'targetValue' : stringVal , 'targetId' : formTargetId , 'tableName' : targetName }, 
      url: 'app/model/target/GG/add-update_svc.php', 
      success: function (form, action) { // When saving data success 
       Ext.Msg.alert('Success', action.result.message);  

       // clear the form 
       form.reset(); 

       // reload store 
       Ext.data.StoreManager.lookup('tvdStore').load(
        { 
         params: { 
          tableName: formTableName, 
          targetName: targetName, 
          familyName: formFamilyName 
         } 
        } 
       ); 

      }, 
      failure: function (form, action) {  // when saving data failed 
       Ext.MessageBox.alert ('Message','Saving data failed'); 
      } 
     }); 
    } 
} 

をストアはリロードしていますが、loadMaskは表示されず、グリッド自体は更新されません。

答えて

1

実際には、更新/削除/挿入手順の後で、店舗全体を再ロードする必要はありません。 Storeクラスには、サーバーからの結果メッセージを受け取った後にレコードのローカルコピーを更新するロジックがあります。したがって、サーバーが適切なメッセージを返し、ローカルコピーが更新されていることを確認することができます。

グリッドは更新されたレコードも自動的に再描画する必要があります。

関連する問題