ExtJS网格选择模型

ExtJS Grid Selection Model

本文关键字:模型 选择 网格 ExtJS      更新时间:2023-09-26

我有一个ExtJS网格,其中映射了一个存储。

存储的JSON响应包含20个字段,但我只映射了存储中的10个字段。我是否可以在不必在商店中映射的情况下获得其他10个字段,或者我是否有必要将所有字段映射到商店。对网格的行选择事件执行此操作。至于代码,我可以创建网格、映射存储、激发事件,甚至可以获得具有映射的10字段的所选行的记录。

有什么建议吗??

应Shekhar的要求:

存储定义

Ext.define('gdoc.store.PrintPaperStore', {
    extend: 'Ext.data.Store',
    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            autoLoad: true,
            storeId: 'PrintPaperStore',
            proxy: {
                type: 'ajax',
                url: 'urlToRetrieveTheJSON',
                reader: {
                    type: 'json',
                    root: 'root'
                }
            },
            fields: [{
                    mapping: 'value',
                    name: 'value'
                },
                {
                    mapping: 'display',
                    name: 'display'
                }
            ]
        }, cfg)]);
    }
});

JSON响应:

{
     "root": [{
         "value": "COATED115",
         "display": "Coated recycled paper (115gms)",
         "description": "Good quality",
         "extra": "EXTRA INFO"
     }, {
         "value": "COATED135",
         "display": "Coated recycled paper (135gms)",
         "description": "Good quality"
     }, {
         "value": "OFFSET",
         "display": "Offset recycled paper (80gms)",
         "description": "Good quality",
         "extra": "EXTRA INFO"
     }, {
         "value": "OTHER",
         "display": "Other paper (client to order)",
         "description": "Good quality",
         "extra": "EXTRA INFO"
     }]
 }

正如您所看到的,我只从store中的JSON响应映射了valuedisplay

我是否可以检索descriptionextra的值,而不必将它们映射到store中。

您可以访问模型上的.raw属性,该属性将包含来自读取器的原始JSON。

否。模型或存储必须设置您希望从JSON数据中获得的所有字段。

我很困惑你为什么不想映射额外的字段?这纯粹是为了节省时间,并希望有一种更快的方法来访问数据吗?或者您希望字段名称是动态的?

如果这是动态原因,请查看这篇文章以获得解决方案。ExtJS 4 动态模型