2013-02-06 30 views
0

平臺 - Ext.net 2.1在MVC項目中。數據從DirectMethod作爲json返回,並且綁定到客戶端。如何使用ext.net爲ext.js定義嵌套商店

我返回一個數據集的結果與多個表與表之間定義的關係。我想將結果數據綁定到要在數據視圖中使用的存儲。我填寫的第一個數據視圖只使用最高級別的數據。但是,當用戶在數據視圖中選擇一條記錄時,我想要綁定到另一個數據視圖中的另一個模板以提供所有級別的信息。

Tables 

Account 
--- Addresses 

(我將跳過其他的表現)

這裏是我的模型和存儲的定義:

@(Html.X().Model() 
     .Name("SearchResults.Models.Address") 
     .IDProperty("nafnmfuid") 
     .Associations(assoc => assoc.Add(new BelongsToAssociation() {Model = "SearchResults.Models.Account"})) 
     .Fields(
      new ModelField("nafnmfuid", ModelFieldType.Int), 
      new ModelField("naftype"), 
      new ModelField("nafadd1"), 
      new ModelField("nafcity"), 
      new ModelField("nafstate"), 
      new ModelField("nafzip") 
    )) 

@(Html.X().Model() 
    .Name("SearchResults.Models.Account") 
    .IDProperty("nmfuid") 
    .Associations(assoc => assoc.Add(new HasManyAssociation() {Name = "Addresses", Model = "SearchResults.Models.Address", AssociationKey = "Addresses", PrimaryKey = "nmfuid", ForeignKey = "nafnmfuid"})) 
    .Fields(
     new ModelField("nmfuid", ModelFieldType.Int), 
     new ModelField("AmfLastNamePrimary"), 
     new ModelField("AmfFirstNamePrimary"), 
     new ModelField("nmfid"), 
     new ModelField("naftype"), 
     new ModelField("nafadd1"), 
     new ModelField("nafcity"), 
     new ModelField("nafstate"), 
     new ModelField("nafzip") 
    ) 
)  

@(Html.X().Store() 
      .ID("StoreSearchResults") 
      .ModelName("SearchResults.Models.Account") 
      .Reader(readers => readers.Add(Html.X().JsonReader())) 
    ) 

我試圖返回數據嵌套的JSON以及json中有三個對象。

當我綁定數據(在客戶端)時,我得到名爲地址的最高級別(帳戶)中的新字段。但是,該字段是空數組。

當我查看帳戶記錄的RAW屬性時,我看到所有嵌套的數據。

這裏是可以被Ext.net

window.App.StoreSearchResults2 = Ext.create("Ext.data.Store", { 
    model:Ext.define("SearchResults.Models.Address", { 
     extend: "Ext.data.Model" 
     , fields:[ { 
      name:"nafnmfuid" 
      ,type:"int" 
     } 
     , { 
      name:"naftype" 
     } 
     , { 
      name:"nafadd1" 
     } 
     , { 
      name:"nafcity" 
     } 
     , { 
      name:"nafstate" 
     } 
     , { 
      name:"nafzip" 
     } 
     ] 
     ,idProperty:"nafnmfuid" 
     ,associations:[ { 
      type:"belongsTo" 
      ,model:"SearchResults.Models.Account" 
     } 
     ] 
    }) 
    ,storeId:"StoreSearchResults2" 
    ,autoLoad:true 
    ,proxy: { 
     type:'memory' 
     , reader: { 
      type:"json" 
     } 
    } 
}); 
window.App.StoreSearchResults = Ext.create("Ext.data.Store", { 
    model:Ext.define("SearchResults.Models.Account", { 
     extend: "Ext.data.Model" 
     , fields:[ { 
      name:"nmfuid" 
      ,type:"int" 
     } 
     , { 
      name:"AmfLastNamePrimary" 
     } 
     , { 
      name:"AmfFirstNamePrimary" 
     } 
     , { 
      name:"nmfid" 
     } 
     , { 
      name:"naftype" 
     } 
     , { 
      name:"nafadd1" 
     } 
     , { 
      name:"nafcity" 
     } 
     , { 
      name:"nafstate" 
     } 
     , { 
      name:"nafzip" 
     } 
     ] 
     ,idProperty:"nmfuid" 
     ,associations:[ { 
      type:"hasMany" 
      ,associationKey:"addresses" 
      ,primaryKey:"nmfuid" 
      ,model:"SearchResults.Models.Address" 
      ,foreignKey:"nafnmfuid" 
      ,name:"Addresses" 
     } 
     ] 
    }) 
    ,storeId:"StoreSearchResults" 
    ,autoLoad:true 
    ,proxy: { 
     type:'memory' 
     , reader: { 
      type:"json" 
     } 
    } 
}); 

回答

0

產生的問題是,我所用的客戶機上的方法loadData綁定的數據ext.js代碼。切換到loadRawData的竅門。