私はExtJS 5.1.3を使用していますが、モデルを持つストアからロードされたグリッドがあります。グリッドはプラグインのroweditorを使用するように設定されているので、セルを編集して新しい値を与えます。この時点で、セルが変更されたことを示す赤いチェックが表示されます。グリッドの保存とストアのリロード後にExtJSグリッドローダードーターがまだ汚れている
私はクリックしたときにstore.getModifiedRecords()を取得し、これをAjaxリクエストに渡す「保存」ボタンを持っています。このリクエストが成功すると、いくつかのことが起こり、最後にグリッド・ストアをロードしますグリッドにデータの最新バージョンを再投入すると、これは問題なく、期待どおりに動作しているようです。
これはマルチページアプリケーションであるため、ユーザーがこのページから移動したときのチェックがあります。これは保存されていないグリッドの変更をキャッチするためのもので、基本的にページからフォームを取得してisDirtyこれは私が問題を見つけているところです。行エディタが汚れていると返されています。これはエディタがあり、ExtJSがフォーム検証を使用しているためです。
ストアの読み込みがなぜグリッド列に関連付けられた汚れたフィールドをクリアしませんか?私はAjaxリクエストの前にストアをクリアし、グリッドビューをリフレッシュするなど、Ajaxリクエストを行う前にストアの変更をコミットしようとしましたが、 。簡単なフィドル
https://fiddle.sencha.com/#view/editor&fiddle/1rmf
に複製するために管理フィドルはこれらに続く複製する、基本的なものです:私は汚れたフィールドを持つものとしてroweditorを拾う:(任意のヘルプは大歓迎です
編集、保存グリッドステップ;
- 編集最初の行の年齢、13に変更し、年齢
- 確認するには、ボタンを
- クリック「)(roweditorが汚れている値を確認してください」(私は変更私たちが作ってきたたデータをロードするために店を強制しています)、[保存]をクリックしますroweditor isDirty()関数の値。これはtrueを返します。
ボタンハンドラを見ると、フォーム[0] .items.items [2]にドリルしてこのフィールドが汚れていることがわかりますisDirty()がtrueを返す理由です。
としては受け入れ答えで説明
溶液は、roweditorは/私の場合はキャンセルまたはロードストア編集の影響を受けません。私が「保存」をクリックしたときに行ったことは、グリッドを取得してからエディタとフォームを作成し、reset()を呼び出すことで効果的にすべてを同期させることでした。
grid.editingPlugin.getEditor().form.reset();
あなたも(grid.getPlugins経由でプラグインへのアクセスを得ることができます)
https://fiddle.sencha.com/#view/editor&fiddle/1rmr
[Sencha fiddle](http://fiddle.sencha.com)の形式で例を挙げてください。そうでないと、正確に何をしようとしているのかわからないからです。 – Alexander
は、フィドルで更新されました:) – user2751034
http://docs.sencha.com/extjs/5.1.2/api/Ext.form.Basic.html#cfg-trackResetOnLoadこれには何か考えがありました。それでは – user2751034