Ext JS: Store loadData() Id 重複導致只顯示一筆資料

Ext JS 版本: 4.2.x

Sencha Architect 版本: 2.2.3

此處希望建立一個共用的 grid 來顯示不同 table 的資料,

如下 Json Data 所示:

Json Data
[{"id":1, "name": "Java Programming", "title": "Java 程式設計"},
 {"id":1, "name": "Fashion Magazine", "title": "時尚雜誌"}]

在執行 grid.getStore.loadData(record) 後卻只有顯示一筆資料,

檢查後發現是 id 重複造成,

由於資料存於不同的資料表,因此後端 query 出預備載入的 record 便可能會有重複 id ,

API 說明 proxy 中 reader 的 idProperty 設定,是用該欄位作為 record 的唯一識別值,預設為 id 欄位,

因此我們可以將 idProperty 定義為實際的唯一識別欄位,避免相同 id 的資料被覆蓋,

由於我的 record 並沒有唯一識別值,暫時設置為 undefined。

book update
1
2
3
4
5
6
7
8
proxy: {
  type: 'memory',
  reader: {
      type: 'json',
      idProperty: 'undefined'
  }
}

另外 API 也提到 store.loadData(record) 定義為預設資料已經處理成正確格式,

因此不會經過 reader 二次處理,

若希望使用 reader 處理,需改為使用 store.loadRawData(record)

Comments