【问题标题】:Extjs4 Load data in grid from serverExtjs4 从服务器加载网格中的数据
【发布时间】:2013-10-01 23:17:17
【问题描述】:

如何从服务器加载网格中的数据我能够将数据从存储加载到网格,但无法将数据从服务器加载到存储,然后再加载到网格服务器 API 详细信息:

http://192.1681.102:8080/Petcrumbs/member/getMemberList

请求参数:

{"pageNumber":5}

响应成功:

{ “成员名单”: [ { “地址”: { “状态”:“MH”, “国家”:“印度”, “城市”:“浦那”, “地址ID”:52, "streetName": "嘉维路", "streetNameTwo": "纳尔站", “邮编”:“412042” }, "name": "测试 Mmber4", “密码”:“287974”, "authKey": "99710ff8d98346f51a7b3df83c16257", “性别”:“男性”, "deviceToken": "ldjhakjhdkjahn42,n4lk2jedlkandmandlkand", “社区”:“Kothrud”, "emailId": "r.pekam@mb.com", “电话”:“9096305571”, “图像”:空, “会员ID”:41, “活跃”:1, “已删除”:错误, "myPackage": "黄金", "加入日期": "09-17-2013" } ], "message": "会员检索成功。", “成功”:真 }

响应失败:

{ “listOfMembers”:空, "message": "无法检索成员。", “成功”:假

}


在 EXTJS 商店中

 Ext.define('PetCrumbs.store.Members', {
extend : 'Ext.data.ArrayStore',
model : 'PetCrumbs.model.Member',

autoLoad : true,
//storeId : 'Data',
proxy : {
    type : 'ajax',
    url : '/Petcrumbs/member/getMemberList',
    method : 'POST',
    headers : {
        'Content-Type' : 'application/json',
        'Accept' : 'application/json'
    },
    jsonData : {
        pageNumber : "5"
    },
    reader : {
        type : 'json',
        root: 'listOfMembers',
        successProperty: 'success'
    }
 }
});

当我有这样的存储(硬编码数据)时,网格会显示数据:

Ext.define('PetCrumbs.store.Members', {
extend: 'Ext.data.ArrayStore',
model: 'PetCrumbs.model.Member',

data: [
['1','1002','Asin','kothroud@gmail.com','kothrud,Pune','MH',
 'Pune','411051','Male','Gold','Kothrud','1'],['2','1012','Karina','Pashan@gmail.com',
'Pashan,Pune','MH','Pune','411051','Female','Silver','Pashan','0']
]   
});

请告诉我上面的代码有什么问题?

【问题讨论】:

  • 正如其他人所说,您应该使用 JsonStore。但是您还应该检查您的模型定义......有时在使用数组数据时(如第一个示例),您使用“映射”配置来定义字段,但是有了 Json 响应,将不再需要。如果您需要更多帮助,请发布您的模型定义。
  • Existdissolve,model: var types=Ext.data.Types; Ext.define('PetCrumbs.model.Member', { extend : 'Ext.data.Model', fields : [{name : 'srNo',type : types.INT}, {name : 'memberId', type : types .INT},{name:'memberName',type:types.STRING},{name:'emailId',type:types.STRING},{name:'address',type:types.STRING},{name:'状态',类型:types.STRING},{name:'city',type:types.STRING},{name:'zip',type:types.STRING},{name:'gender',type:types.STRING },{name:'myPackage',type:types.STRING},{name:'joinedCommunities',type:types.STRING},{name:'deleted',type:types.BOOL},
  • {name : 'password',type : types.STRING}, {name : 'phone',type : types.STRING}, {name : 'street',type : types.STRING}] });我用过 store bt 结果是一样的......

标签: extjs extjs4 extjs-mvc extjs-grid


【解决方案1】:

你能修改你的服务器发送数据的方式吗?最简单的方法是使用普通的Ext.data.Store 和Ext.data.reader.Json。要使用它,您的 JSON 应如下所示:

{ 
   "listOfMembers": [
   {"attr1":"value1",:"attr2":"value2",...},... 
   ], 
   "message": "Unable to retrieve members.", "success": false
}

那么就顺理成章了。

如果您想继续输出,您必须修改阅读器或定义更复杂的对象关系。

【讨论】:

    【解决方案2】:

    我的猜测是你使用ArrayStore,它适用于本地硬编码数据(因为它是数组),但是当你想远程加载数据时 - 你应该扩展Ext.data.Store 吗?

    【讨论】:

      【解决方案3】:

      您正在使用 ArrayStore,但服务器返回 JSON。所以你应该使用 JsonStore。或者只是配置阅读器的基本商店

      【讨论】:

      猜你喜欢
      • 2012-05-28
      • 2012-01-06
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 2019-01-18
      • 2016-03-23
      相关资源
      最近更新 更多