繁体   English   中英

如何在Extjs中使用网格显示JSON数据

[英]How to display JSON data using grid in Extjs

我是Extjs的新手,对Javascript及其相关库不是很熟悉。 现在我要做的是:

  1. 将GET请求发送到远程服务器,例如GET http://remote-restful-server.com/find/ {id}。

  2. 服务器将返回JSON格式的数据。 数据就像:

     [{ id: 1, level01: "Food", level02: null, level03: null, code: "XXXX", link: ABC1 }, { id: 2, level01: "Food", level02: "Fruit", level03: null, code: "XXXX", link: ABC1 }, ..., ...] 
  3. 我想在extjs中显示这些数据。 但是当我这样做时有一些问题:

1)步骤1的{id}是从此页面的网址获取的。 如何通过使用Extjs在URL中获取参数?

2)如何向一个宁静的Web服务发出GET请求并获取返回的JSON数据?

3)如何通过Extjs中的网格组件显示所有数据? JSON数组中所有元素的字段都是固定的。

4)我希望网格中的某些列包含链接。 这个怎么做?

5)在显示某些特定字段之前如何进行一些更改?

我试图在数组网格上显示json数据。 但是我失败了。 看来我无法成功加载json数据。 代码是:

Ext.onReady(function() {


    // Define a product model
    Ext.define('Product', {
        extend: 'Ext.data.Model',
        fields: [
            {name: 'product_id', type: 'int'},
            'large_class_code',
            'medium_class_code',
            'small_class_code',
            'product_code',
            'large_class_name',
            'medium_class_name',
            'small_class_name',
            'product_name',
            'current_level',
            'current_code',
            'current_name',
            'parent_id',
            'parent_name',
            'has_standards'
        ]
    });

    // create the data store
    var store = Ext.create('Ext.data.Store', {
        model: 'Product',
        proxy: {
            type: 'ajax',
            url : 'http://xxx.xxx.xx.xxx:8080/product/all/',
            reader: {
                type: 'json'
            }
        }
    });

    store.load();
    //console.log(store);

    // create the grid
    var grid = Ext.create('Ext.grid.Panel', {
        store: store,
        columns: [
            {id:'id',header: 'ID', width: 30, sortable: true, dataIndex: 'product_id'},
            {header: 'large_class_code', width: 100, sortable: true, dataIndex: 'large_class_code'},
            {header: 'medium_class_code', width: 100, sortable: true, dataIndex: 'medium_class_code'},
            {header: 'small_class_code', width: 100, sortable: true, dataIndex: 'small_class_code'},
            {header: 'product_code', width: 100, sortable: true, dataIndex: 'product_code'},
            {header: 'large_class_name', width: 100, sortable: true, dataIndex: 'large_class_name'},
            {header: 'medium_class_name', width: 100, sortable: true, dataIndex: 'medium_class_name'},
            {header: 'product_name', width: 100, sortable: true, dataIndex: 'product_name'},
            {header: 'current_level', width: 100, sortable: true, dataIndex: 'current_level'},
            {header: 'current_code', width: 100, sortable: true, dataIndex: 'current_code'},
            {header: 'current_name', width: 100, sortable: true, dataIndex: 'current_name'},
            {header: 'parent_id', width: 100, sortable: true, dataIndex: 'parent_id'},
            {header: 'parent_name', width: 100, sortable: true, dataIndex: 'parent_name'},
            {header: 'has_standards', width: 100, sortable: true, dataIndex: 'has_standards'}
        ],
        stripeRows: true,
        height:600,
        width:2000,
        renderTo: 'grid-example',
        title:'test list'
    });

});

可以显示网格,但是上面没有任何数据。 我在Chrome中检查控制台:

我有:

选项http://xxx.xxx.xx.xxx:8080/product/all/?_dc=1384145304301&page=1&start=0&limit=25 Access-Control-Allow不允许原始http://xxx.xxx.xx.xxx -起源。

XMLHttpRequest无法加载http://xxx.xxx.xx.xxx:8080/product/all/?_dc=1384145304301&page=1&start=0&limit=25 Access-Control-Allow-Origin不允许使用来源http://xxx.xxx.xx.xxx

对于第1点和第2点,您可以阅读: ExtJS REST请求/响应处理的详细文档?

对于第3点:如果您正在(并且应该使用)ExtJs4,则网格将绑定到商店,这就是通过网格显示信息的方式http://docs.sencha.com/extjs/4.2.2/#!/guide/application_architecture

对于第4点和第5点,您可以在网格列上使用“渲染器”配置。

最好的祝福。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM