0

Platform - Ext.net 2.1 in an MVC project. The data is coming back as json from a DirectMethod and I'm binding on the client.

I'm returning the results of a dataset with multiple tables with relationships defined between the tables. I want to bind the resulting data to a store to be used in a dataview. The first dataview that I'm filling, only uses the highest level of data. However, when the user selects a record in the dataview, I want to bind to another template in a different dataview to provide all levels of information.

Tables

Account
--- Addresses

(I'll skip the other table for now)

Here is the definition of my models and store:

@(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()))
      )

I tried returning the data as nested json as well as three objects in the json.

When I bind the data (on the client), I get the new field in the highest level (Account) called Addresses. However, the field is an empty array.

When I look at the RAW property of the Account record, I see all the nested data.

Here is the ext.js code that's generated by 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"
        }
    }
});
4

1 回答 1

0

问题是我在客户端使用方法 loadData 来绑定数据。切换到 loadRawData 就成功了。

于 2013-02-15T15:43:58.090 回答