ExtJS 4 grid.Panel如何使用dataIndex的一个子元素 [英] ExtJS 4 grid.Panel how to use dataIndex of a sub-element

查看:116
本文介绍了ExtJS 4 grid.Panel如何使用dataIndex的一个子元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在ExtJS网格中显示数据。我有它主要工作,但在我的数据数组中,我有一个包含附加数据的数组(名为'extra')。我需要从这个子数组中显示字段:

I am trying to display data in an ExtJS grid. I have it mostly working, but in my array of data, I have an array containing additional data (named 'extra'). I need to display fields from this sub-array:

这是从我的服务器回到ExtJS(Direct Proxy)的一些示例数据 - 这是一个记录: / p>

Here is some example data coming back from my server in to ExtJS (Direct proxy) - this is one record:

{"type":"rpc","tid":6,"action":"EncounterService","method":"getRecords","result":[{"id":"20","addedDate":"2011-09-22 11:02:04","clientID":"19","extra":{"gender":"M"}}]}

在我的Ext.grid.Panel中,我有一个商店设置有一个如下所示的模型:

In my Ext.grid.Panel, I have a Store set that has a model that looks like this:

Ext.define('ESDB.model.Encounter', {
    extend: 'Ext.data.Model',
    fields: ['id','addedDate','clientID','extra']
});

最后,我的Ext.grid.panel,我的列被定义:

Finally, my Ext.grid.panel, my columns are defined:

 this.columns = [
          {header: 'id', dataIndex: 'id', flex: 1}
              {header: 'gender', dataIndex: 'extra.gender', flex: 1}
   ]

该ID将显示 - 基本result数组中的任何其他字段也将显示。但是,我'extra.gender'不工作。如何添加列,并从我的'result'数组对象中的'extra'数组对象显示性别行?

The id will display - as will any other field in the base 'result' array. However, I the 'extra.gender' does not work. How can I add a column and have it display the gender row from the 'extra' array object within my 'result' array object?

推荐答案

据我所知,Ext不支持那种嵌套数据。您可以扩展model并覆盖get / set方法来支持这一点。以下是如何覆盖get方法的示例。

As far as I know Ext not support that kind of nested data out of box. You can extend model and override get/set methods to support this. Below is example of how you can override get method.

var model = Ext.define("Ext.data.reader.SomeModel", {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'name'},
        {name: 'extra.gender'}
    ],
    get: function(field){
        if (field.indexOf('.') !== -1) {
            var parts = field.split('.');
            var value = Ext.data.Model.prototype.get.call(this, parts[0]);

            return Ext.isObject(value) ? value[parts[1]] : undefined;
        }
        return Ext.data.Model.prototype.get.call(this, field);
    }
})

集合包含更多的代码,但它仍然是很简单的覆盖。

Set contains more code, but it's still quite simple to override.

这篇关于ExtJS 4 grid.Panel如何使用dataIndex的一个子元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆