Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为ExtJS存储创建多个根JSON?_Json_Extjs_Grid_Store - Fatal编程技术网

如何为ExtJS存储创建多个根JSON?

如何为ExtJS存储创建多个根JSON?,json,extjs,grid,store,Json,Extjs,Grid,Store,我想在服务器端创建一个根为2的JSON字符串。我使用的是ExtJS3.2。我想使用第一个根将数据加载到网格,第二个根将用不同的数据填充表单。 我像这样在服务器端创建JSON字符串 { metaData: { "idProperty": "reportID", "root": "data", "successProperty": "success" }, "success": true, "data": [

我想在服务器端创建一个根为2的JSON字符串。我使用的是ExtJS3.2。我想使用第一个根将数据加载到网格,第二个根将用不同的数据填充表单。 我像这样在服务器端创建JSON字符串

{
    metaData: {
        "idProperty": "reportID", 
        "root": "data", 
        "successProperty": "success"
    }, 
    "success": true, 
    "data": [
    {
        "ID": 1, 
        "name": "Jon", 
        "surname": "Doe"
    }]
}
让我们假设第二个名称是摘要,第二个idPropertysummaryID。我如何实现这一点,在哪里可以添加摘要数据?
Thx all.

没有你愿意做的automagic。我也遇到了同样的问题,我找到了如何从JSON响应自动创建多个存储。在加载网格之前,请输入以下代码。在extjs4中,我将以下代码放在app.js中,以便在初始化应用程序时创建存储。存储将自动创建,具体取决于JSON返回的内容:

    Ext.Ajax
                    .request({
                        url : './account/getadminstores',
                        callback : function(options, success, response) {
                            var json = Ext.decode(response.responseText);
                            var adminStores = new Array();
                            // setup and intitialize on the fly stores
                            for ( var key1 in json) {
                                var storeFields = new Array();
                                for ( var key2 in json[key1]) {// if
                                    // (i==1){break;}
                                    // console.log(key2);
                                    for ( var key3 in json[key1][key2]) {
                                        storeFields.push(key3);
                                    }
                                    break;
                                }
                                ;
                                Ext.define('MA.store.' + key1, {
                                    extend : 'Ext.data.Store',
                                    fields : storeFields,
                                    storeId : key1,
                                    id : 'MA.store.' + key1,
                                    data : json[key1],
                                proxy: {
                                    type: 'ajax',
                                    url : './account/getadminstores',
                                    reader: {
                                        type: 'json',
                                        root: key1
                                    }
                                },
                                autoLoad: true
                                });
                                Ext.create('MA.store.' + key1);
                            }
                            ;

为您的案例创建的存储将是
MA.store.root1
MA.store.root2
哪个MA是您的应用程序命名空间(您应该将其更改为您的应用程序命名空间)。此代码适用于extjs4,您可能需要进行一些修改才能使其在旧版本中工作。希望能有所帮助。

没有您愿意执行的automagic。我在上遇到了相同的问题,并且我找到了如何从JSON响应自动创建多个存储。在加载网格之前,请输入以下代码。在extjs4中,我将以下代码放在app.js中,以便在初始化应用程序时创建存储。存储将自动创建,具体取决于JSON返回的内容:

    Ext.Ajax
                    .request({
                        url : './account/getadminstores',
                        callback : function(options, success, response) {
                            var json = Ext.decode(response.responseText);
                            var adminStores = new Array();
                            // setup and intitialize on the fly stores
                            for ( var key1 in json) {
                                var storeFields = new Array();
                                for ( var key2 in json[key1]) {// if
                                    // (i==1){break;}
                                    // console.log(key2);
                                    for ( var key3 in json[key1][key2]) {
                                        storeFields.push(key3);
                                    }
                                    break;
                                }
                                ;
                                Ext.define('MA.store.' + key1, {
                                    extend : 'Ext.data.Store',
                                    fields : storeFields,
                                    storeId : key1,
                                    id : 'MA.store.' + key1,
                                    data : json[key1],
                                proxy: {
                                    type: 'ajax',
                                    url : './account/getadminstores',
                                    reader: {
                                        type: 'json',
                                        root: key1
                                    }
                                },
                                autoLoad: true
                                });
                                Ext.create('MA.store.' + key1);
                            }
                            ;

为您的案例创建的存储将是
MA.store.root1
MA.store.root2
哪个MA是您的应用程序名称空间(您应该将其更改为您的应用程序名称空间)。此代码用于extjs4,您可能需要进行一些修改以使其在旧版本中工作。希望它有所帮助。

我们可以使用,
{“成功”:true,“root1”:[{“ID”:1,“name”:“Jon”,“姓氏”:“Doe”},{“ID”:2,“name”:“Jane”,“姓氏”:“Doe”}],“root2”:[{“ID”:1,“name”:“Jack”,“姓氏”:“Brown”},{“ID”:2,“姓名”:“克里斯”,“姓氏”:“布朗”}
我们可以使用,
{“成功”:真,“根1”:[{“ID”:1,“姓名”:“乔恩”,“姓氏”:“多伊”},{“ID”:2,“姓名”:“简”,“姓氏”:“多伊”}],“根2”:[{“ID”“:1,“姓名”:“杰克”,“姓氏”:“布朗”},{“身份证”:2,“姓名”:“克里斯”,“姓氏”:“布朗”}]}”
我不能投赞成票,因为它需要15个声誉:S,但我接受了你的答案。谢谢。我写这本《痛苦之王》经历了很多痛苦。它的GNU/GPl许可,你可以在任何地方使用它。谢谢你的出色工作。我不能投赞成票,因为它需要15个声誉:S,但我接受了你的答案。谢谢。我经历了很多痛苦写这本痛苦之王。它的GNU/GPl许可,你可以在任何你喜欢的地方使用它。谢谢你的出色工作。