ExtJS DirectStore中字段的元数据配置

时间:2011-01-19 15:05:13

标签: javascript extjs

我正在尝试从ExtDirect路由器加载网格数据。结果包含一个metaData对象,该对象应重新配置商店的字段。我收到以下错误但是当我尝试加载我的数据时:

Uncaught TypeError: Cannot read property 'sortType' of undefined (ext-all-debug.js:23943)

JSON结果是:

{
    "action": "Dashboard",
    "method": "dashboarddata",
    "type": "rpc",
    "result": {
        "success": true,
        "metaData": {
            "sortInfo": {
                "direction": "ASC",
                "field": "id"
            },
            "fields": [{
                "mapping": "id",
                "id": "id"
            },
            {
                "mapping": "owner",
                "id": "owner"
            },
            {
                "mapping": "name",
                "id": "name"
            },
            {
                "mapping": "type",
                "id": "type"
            },
            {
                "mapping": "strategy",
                "id": "strategy"
            },
            {
                "mapping": "primebroker",
                "id": "primebroker"
            },
            {
                "mapping": "startdate",
                "id": "startdate"
            },
            {
                "mapping": "date_afc_prelim_approval",
                "id": "date_afc_prelim_approval"
            },
            {
                "mapping": "date_afc_approval",
                "id": "date_afc_approval"
            },
            {
                "mapping": "date_submit_regulator",
                "id": "date_submit_regulator"
            },
            {
                "mapping": "date_approval_regulator",
                "id": "date_approval_regulator"
            },
            {
                "mapping": "enddate",
                "id": "enddate"
            },
            {
                "mapping": "main_iso_currency",
                "id": "main_iso_currency"
            },
            {
                "mapping": "nav_frequency",
                "id": "nav_frequency"
            },
            {
                "mapping": "date_first_nav",
                "id": "date_first_nav"
            },
            {
                "mapping": "launch_size",
                "id": "launch_size"
            },
            {
                "mapping": "target_size",
                "id": "target_size"
            },
            {
                "mapping": "memo",
                "id": "memo"
            },
            {
                "mapping": "isin_codes",
                "id": "isin_codes"
            },
            {
                "mapping": "status",
                "id": "status"
            }],
            "totalProperty": "total",
            "successProperty": "success",
            "idProperty": "id",
            "root": "data"
        },
        "data": [{
            "status": "Project closed",
            "strategy": "Strategy X",
            "date_afc_approval": "2010-01-01",
            "startdate": "2010-01-01",
            "nav_frequency": "Bi-monthly",
            "date_first_nav": "2010-01-01",
            "enddate": "2010-01-01",
            "date_approval_regulator": "2010-01-01",
            "id": "1",
            "date_afc_prelim_approval": "2010-01-01",
            "isin_codes": "123",
            "target_size": "2000",
            "owner": "Some name",
            "name": "First project",
            "memo": "TEXTEXTEXT",
            "main_iso_currency": "TND",
            "primebroker": "Yes",
            "date_submit_regulator": "2010-01-01",
            "launch_size": "1000",
            "type": "TypeX"
        }],
        "total": 1
    },
    "tid": 6
}

商店本身配置如下:

var store = new Ext.data.DirectStore({
        idProperty: 'id'
        ,paramsAsHash: true
        ,directFn: MyApp.Direct.Dashboard.dashboarddata
        ,root:'data'
        ,autoLoad: false
        ,totalProperty:'total'
        ,fields: [
            {name: 'id', mapping: 'id'},
            {name: 'type', mapping: 'type'}
        ]
        ,baseParams: {
            type: this.type,
            filters: this.filters
        }
    });

任何人都可以帮助我吗?这让我疯了,我看不出我做错了什么。

谢谢!

罗布

PS。我使用的是ExtJS 3.3.0

2 个答案:

答案 0 :(得分:1)

为什么不使用Chrome或Firefox调试工具调试该位置?有用的选项是在Chrome中设置例外中断。

答案 1 :(得分:1)

我修好了。调试就行了。

显然,当通过JSON响应中的metaData对象更新字段时,您需要命名字段。 ExtJS在内部使用名称字段作为查找字段。奇怪的是,通过商店字段的静态配置,您不需要该字段......

...
"fields": [{
                "mapping": "id",
                "name": "id",
                "id": "id"
            },
            {
                "mapping": "owner",
                "name": "owner",
                "id": "owner"
            },
            ...