0

プラットフォーム - MVC プロジェクトの Ext.net 2.1。データは DirectMethod から json として返され、クライアントにバインドしています。

テーブル間にリレーションシップが定義された複数のテーブルを持つデータセットの結果を返しています。結果のデータをストアにバインドして、データビューで使用したいと考えています。私が記入している最初のデータビューは、最高レベルのデータのみを使用しています。ただし、ユーザーがデータビューでレコードを選択すると、別のデータビューの別のテンプレートにバインドして、すべてのレベルの情報を提供したいと考えています。

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内の3つのオブジェクトとして返そうとしました。

(クライアント上で) データをバインドすると、最も高いレベル (アカウント) に Addresses という新しいフィールドが作成されます。ただし、フィールドは空の配列です。

Account レコードの RAW プロパティを見ると、ネストされたデータがすべて表示されます。

Ext.net によって生成された ext.js コードを次に示します。

   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 に答える