Extjs Grid使用来自json对象的数据进行排序

时间:2013-07-15 10:06:52

标签: extjs extjs4.1

我正在尝试显示网格。在这种排序是行不通的。这是我的代码。

    <div id="grid-sample"></div>
    <script type="text/javascript">
        Ext.create('Ext.data.Store', {
            storeId:'cstore',
            fields:['user', 'age', 'place'],
            data: [
                        {"user":"joe","age":27,"place":"sydney"},
                        {"user":"abel","age":29,"place":"delhi"},
                        {"user":"fin","age":18,"place":"san jose"}
                    ]

        });

        Ext.create('Ext.grid.Panel', {
            title: 'Sample grid',
            store: Ext.data.StoreManager.lookup('cstore'),
            autoCreateViewPort: false,
            layout: 'fit',
            columns: [
                { text: 'Name', xtype: 'templatecolumn', tpl: '{user}' ,sortable : true },
                { text: 'Age', xtype: 'templatecolumn', tpl: '{age}' ,sortable : true },
                { text: 'Place', xtype: 'templatecolumn', tpl: '{place}',sortable : true  }
            ],
            width: 750,
            renderTo: 'grid-sample'
        });
    </script>

2 个答案:

答案 0 :(得分:1)

如果dataIndex不应该引用字段而是引用对象的属性,该怎么办?所以上面的数据可能是

data: [{{"user":"joe",userName:"Joeschmoe"},"age":27,"place":"sydney"},
{{"user":"Jane",userName:"Jany"},"age":29,"place":"delhi"},
{{"user":"Mary",userName:"mary123"},"age":18,"place":"san jose"}
]

答案 1 :(得分:0)

您需要为排序添加 dataIndex 才能正常工作。

所以你的专栏会是这样的,

 columns: [
   { text: 'Name', xtype: 'templatecolumn',tpl: '{user}',dataIndex: 'user' ,sortable : true },
   { text: 'Age', xtype: 'templatecolumn', tpl: '{age}',dataIndex: 'age' ,sortable : true },
   { text: 'Place',xtype: 'templatecolumn', tpl: '{place}', dataIndex :'place',sortable : true  }]

dataIndex 的值应与商店中的字段名称匹配。