2012-05-18 31 views
2

我是Ext JS的新手,并尝试在网格上使用各种选项。我创建了一个网格并将其添加到面板(Ext.panel.Panel)。网格显示为空数据(我没有添加代理)。在发生某些事件时,我构造了一个JSON对象并在网格上触发loadDataExtjs将本地JSON对象加载到网格中

以下是我的代码片段。

Ext.define('AM.view.grid.Details', { 
    extend: 'Ext.grid.Panel', 
    alias: 'widget.details', 
    title: 'Widget Data', 

    store: { 
     autolaod: true, 
     fields: [{ 
      name: 'widgetid', 
      mapping: 'widget_id', 
      type: 'string' 
     }, { 
      name: 'widgetname', 
      mapping: 'widget_name', 
      type: 'string' 
     }, { 
      name: 'widgetnotes', 
      mapping: 'widget_notes', 
      type: 'String' 
     }], 
     reader: { 
      type: 'json' 
     } 
    }, 
    width: 620, 
    height: 400, 

    forceFit: true, 
    columns: [{ 
     header: 'id', 
     dataIndex: 'widgetid', 
     hidden: true 
    }, { 
     header: 'Name', 
     dataIndex: 'widgetname', 
     width: 150 
    }, { 
     header: 'Note', 
     dataIndex: 'widgetnotes', 
     width: 150 
    }], 

    renderTo: Ext.getBody() 
}); 

我有一个函数,它是另一个小部件的回调函数。当一个事件发生时,这个函数getTriggered。

function someFunction(grid) { 
    var jsonData = formGridData(); 
    grid.store.loadData(jsonData); 
} 

请假设在创建该网格和我有功能formGridData(),其将所形成的字符串JSON对象,并返回。

所以,当我运行应用程序,如果jsonData的长度为5,那么5个空行出现在网格中。

以下是JSONData

[{ 
    'widget_id': 'widget-1', 
    'widget_name': 'gridpanel', 
    'widget_notes': 'This is used to handle..' 
}, { 
    'widget_id': 'widget-2', 
    'widget_name': 'combo', 
    'widget_note': 'This is used to handle..' 
}, { 
    'widget_id': 'widget-3', 
    'widget_name': 'panel', 
    'widget_note': 'This is used to handle..' 
}] 

这有什么错在我在做什么?

感谢,
Phani

回答

2

你对电网dataIndexes是错误的。

columns: [{ 
    header: 'id', 
    dataIndex: 'widget_id', //was widgetid 
    hidden: true 
}, { 
    header: 'Name', 
    dataIndex: 'widget_name', //was widgetname 
    width: 150 
}, { 
    header: 'Note', 
    dataIndex: 'widget_notes', //was widgetnotes 
    width: 150 
}] 

正在发生的事情是它看到的行权数量,但由于JSON你必须作为一个实例名为widget_ *和记部件*,它认为他们是别的东西,因此不能显示他们在网格中的适当位置

+0

我有dataIndexes的权利,我的意思就像你在答案中的方式。 – Patton

+0

也许我的回答并不明确,我已经修改了它。如果清楚,那么你的问题的JSON是错误的。 – Alex

+0

Ooops我还没有看到您的评论确实对我有用。谢谢 – Patton

2

对不起,我没有注意到,

如此看来你dataIndex无效

http://jsfiddle.net/ssxenon01/WpZMU/8/

+0

jsonData已经处于解码格式。 jsonData不是一个字符串,而是一个JSON对象 – Patton

+0

我在jsfiddle上测试了它,它在我更改dataIndex后工作 – XenoN

+0

感谢Xenon为您提供了精彩的示例。它确实让我的任务更轻松。非常感谢你 – Patton