2012-10-30 46 views
4

我正在使用Ext JS 4創建簡單的管理員UI。我從Sencha網站的this示例開始。我在窗體中添加了一個複選框組(有四個選項),並且我根據表單下方網格中的選定記錄動態檢查框。一切工作正常,但是當我將數據發送到服務器時,複選框組中的數據格式根據單擊哪個按鈕而變化。Ext JS 4:覆蓋發送到服務器的數據格式

例如,當我編輯記錄並點擊保存按鈕,Ext JS的發送與對應於複選框的真/假值的數組選中狀態:

{"available": [true, true, false, false]} 

當我創建全新的記錄然後點擊添加按鈕,Ext JS的發送與已檢查的複選框名字的數組:

{"available": ["Selection_1", "Selection_2", "Selection_3"]} 

最後,如果我創建了一個新的記錄,然後單擊添加按鈕,但只能看一個複選框,分機JS發送一個單一的字符串值(而不是它的數組)在第二個例子中):

{available": "Selection_1"} 

爲什麼Ext JS會這樣做?這使得處理服務器端的數據變得困難。另外,有沒有辦法可以覆蓋保存按鈕如何將數據發送到服務器,以便它以與添加按鈕發送的格式相同的格式發送它?謝謝!

回答

2

您可以使用allowSingle:false來確保所有寫入操作發送記錄數組,無論記錄的數量如何。這裏是API文檔:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.writer.Json-cfg-allowSingle

只要正在發送的值。我不清楚在這裏究竟發生了什麼,但你可能想看看這個功能:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.CheckboxGroup-method-getSubmitData

編輯:另一個注 - 複選框使用inputValue找出什麼發送表單提交。檢查你的配置這個屬性。

+0

謝謝您的迴應!我有配置每個複選框的inputValue,就像你說的那樣,當我通過Ext JS文檔閱讀時,它說在提交時,每個複選框的inputValue被髮送。它必須是當點擊保存按鈕(和updateRecord())被調用時,不會調用提交操作?我不知道爲什麼它不會發送inputValue。 allowSingle方法是有用的,但不是我正在尋找的,getSubmitData方法返回null,但我將更多地瞭解這個... –