我使用ExtJS 5.1.3,我有一個網格,從一個商店有一個模型加載。網格被設置爲使用插件roweditor,所以我編輯一個單元格,並給它一個新的值,此時紅色的勾號顯示單元格已被更改。ExtJS網格roweditor仍然骯髒後網格保存和存儲重裝
我點擊它時,保存按鈕獲取store.getModifiedRecords(),並把這些開了一個Ajax請求,在此請求的成功的幾件事情發生,最後的動作我做的是重新加載網格店然後再用最新版本的數據填充網格,這很好,似乎按預期工作。
由於這是一個多頁面應用程序,當用戶離開這個頁面時,我也有一個檢查,這是爲了捕獲任何未保存的網格更改,所以基本上我從頁面獲取任何表單並驗證isDirty()值,這是我找到我的問題,roweditor被返回爲髒,這是因爲一些列有一個編輯器和ExtJS使用這些字段的表單驗證,
我不明白爲什麼商店再次加載沒有清除與網格列關聯的任何髒字段?我已經嘗試了許多事情,比如在ajax請求之前清理商店以及刷新網格視圖,我嘗試在做ajax請求之前提交商店更改,但每次嘗試從格保存我拿起roweditor具有骯髒的領域:(任何幫助是極大的讚賞
編輯:設法複製一個簡單的小提琴
https://fiddle.sencha.com/#view/editor&fiddle/1rmf
小提琴是基本的,複製遵循以下步驟;
- 編輯第一行時代,改變年齡13
- 單擊Save(我迫使商店加載已經改變,我們已經取得了數據)點擊
- 「檢查roweditor髒()值」按鈕查看roweditor的值是dirty()函數,這將返回true
如果你看看按鈕處理程序,你可以鑽入到表單[0] .items.items [2]中並且看到這個字段有髒:true這就是爲什麼isDirty()返回true。在我的情況
SOLUTION
如接受的答案解釋的,roweditor不受商店編輯/取消或負載。我點擊「保存」時所做的就是獲取網格,然後編輯器和它的形式,並在此上調用reset(),以便再次有效地同步所有內容。
grid.editingPlugin.getEditor().form.reset();
它返回一個arrary
更新小提琴
你也可以通過grid.getPlugins訪問插件()來顯示它的工作
https://fiddle.sencha.com/#view/editor&fiddle/1rmr
請一個示例的[煎茶小提琴]的形式(http://fiddle.sencha.com),否則我們不知道究竟你正在嘗試做的。 – Alexander
有一個小提琴更新:) – user2751034
http://docs.sencha.com/extjs/5.1.2/api/Ext.form.Basic.html#cfg-trackResetOnLoad我確實有一些想法可能的,這可能有東西用它做 – user2751034