从表单面板响应将数据加载到网格中

时间:2011-11-05 18:04:49

标签: javascript extjs

我有一个表格,其中有一个相关的网格,可以满足一对多的关系。 当我使用url加载表单时,我也使用以下代码获取网格数据

this.load({
        url:reportURL + 'editReport',
        waitMsg:'Loading...',
        params:{
            reportIdKey: this.reportId
        },
        success:function(form,action){                
            response = action.result.data; // Contains the data for the grid               
        }
    })

返回的json如下

{
"data":{
  "setupDt":"09-27-2011",
  "expireDt":"12-31-1950",
  "reportNm":"Report_55283",
  "templateNm":"risk_measures_tmpl",
  "GridData":
  *[
     {
        "sId":1,
        "sNm":"W",
        "mId":1,
        "mNm":"R",
        "pId":"..",
        "pIdAlias":"",
        "bId":"...",
        "bIdAlias":"",
        "pDesc":"FUND==GB|ACT==WG|W",
        "grpId":"",
        "scF":"",
        "sortSeq":1,
        "grpN":1
     }
  ]*      

如何将上面json中的网格数据加载到我的网格中。

请帮忙..     },     “成功”:“真”     }

2 个答案:

答案 0 :(得分:1)

ExtJS网格使用商店来更新网格。事实上,商店是必需的。您只需使用json store即可。当您收到回复时,当您收到针对商店的电话loadData时。您使用loadData而不是load的原因是因为表单已经完成了AJAX调用,而load会尝试重新创建它。例如(这都假设是ExtJS 3.4,我不知道你使用的是什么版本,但它在ExtJS 4中几乎是一样的):

    var gridStore = new Ext.data.JsonStore({
        root: 'GridData',
        fields: [
            'sid',
            // ... your other field names under 'GridData'
        ]
    });
    var myGrid = new Ext.grid.GridPanel({
        store: gridStore,
        // ... your other config options here
    });
    this.load({
        url:reportURL + 'editReport',
        waitMsg:'Loading...',
        params:{
            reportIdKey: this.reportId
        },
        success:function(form,action){                
            response = action.result.data; // Contains the data for the grid
            gridStore.loadData(response);
        }
    });

一旦loadData完成,网格将自动更新为构建网格时网格附加到商店的普通load事件处理程序的一部分。

答案 1 :(得分:0)

我通过迭代结果json并在store.getRecordType({field:value})中设置相应的属性来解决这个问题。

相关问题