EXTJS 4 嵌套 json 数组数据到网格面板

Posted

技术标签:

【中文标题】EXTJS 4 嵌套 json 数组数据到网格面板【英文标题】:EXTJS 4 nested json array data to grid panel 【发布时间】:2013-06-13 00:08:48 【问题描述】:

我是 ExtJS 的新手,但无论如何我都找不到用简单的 JSON 字符串数组填充我的网格。我的 JSON 如下所示:


 ...stuff...
 "users": ["kevin","ryan", "david", "mark", "ed"]
 ...more stuff...

我想用这个用户列表填充一个简单的单列网格,但似乎找不到任何方法! :(

我的代码如下所示:

  Ext.define('usersModel', 
      extend: 'Ext.data.Model',
      fields: [ name: 'users', type: 'auto']
  );

  var usersStore = Ext.create('Ext.data.Store', 
      model: 'usersModel',
      proxy: 
          type: 'ajax',
          url : '/users',
          reader: 'json'
      ,
      autoLoad: true
  );

  // create the Grid
  Ext.create('Ext.grid.Panel', 
      store: usersStore,
      columns: [
          dataIndex: 'users',
          width: 500,
          text: 'User'
      ,
      ],
  );

但它只是在一个单元格中显示逗号分隔的用户列表。我知道为什么会这样,我将列的 dataIndex 设置为数组,而不是数组中的元素,但不知道如何修复它。

【问题讨论】:

【参考方案1】:

试试这个:

  Ext.define('usersModel', 
      extend: 'Ext.data.Model',
      fields: [ name: 'name', type: 'auto']
  );

  var usersStore = Ext.create('Ext.data.Store', 
      model: 'usersModel',
      proxy: 
          type: 'ajax',
          url : '/users',
          reader: 
              type: 'json',
              rootProperty: 'users'
          
      ,
      autoLoad: true
  );

  // create the Grid
  Ext.create('Ext.grid.Panel', 
      store: usersStore,
      columns: [
          dataIndex: 'name',
          width: 500,
          text: 'User'
      ,
      ],
  );

【讨论】:

不走运 :( 现在我的网格是空的,我想这是有道理的,因为名称没有标记为“名称”,它们根本没有标记。 @user1998935 这确实是问题所在。您能否将 JSON 响应更改为 "users": [ name: "kevin" , ...] 之类的内容? 我无法真正更改传入的 JSON :( @N3vik .. 我也在寻找同样的问题 .. 你找到解决方法了吗?

以上是关于EXTJS 4 嵌套 json 数组数据到网格面板的主要内容,如果未能解决你的问题,请参考以下文章

单击一行后,Extjs 4 网格自定义添加一个带有文本字段的面板

将嵌套 JSON 数据发送到服务器的可能方法 - extjs 4.2.x

在 extjs 4.2 中将数据从商店设置到具有网格的表单面板

ExtJS 4.2 将网格数据导出到可下载的 CSV 文件

Extjs 4,如何使用单个 Json 文件为多个动态网格发送多个元数据

ExtJS 在网格中加载嵌套的 JSON 数据