如何在Extjs中获取渲染器函数中其他列的值?

时间:2013-11-11 13:00:09

标签: extjs extjs4 extjs4.1

我想在一列的渲染器函数中获取同一行中另一列的值。我试过一种方法,但它没有用。这是我的代码:

columns: [
            {id:'id',header: 'ID', width: 30, sortable: true, dataIndex: 'category_id'},

            {header: 'current_level', width: 100, sortable: true, dataIndex: 'current_level'},
            {header: 'complete_code', width: 100, sortable: true, dataIndex: 'complete_code'},
            {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',
                renderer: function(val, meta, record, rowIndex) {
                    if (val == 'Yes') {
                        console.log(record.data.category_id);
                    }
                }
            }
        ],

如您所见,我想在has_standards列的渲染器函数中将category_id放在同一行中。但我的方式是错的。你能告诉我怎么做吗?

2 个答案:

答案 0 :(得分:12)

您想使用record.get('category_id')例如:

           renderer: function(val, meta, record, rowIndex) {
                if (val === 'Yes') {
                    console.log(record.get('category_id'));
                }else{
                    console.log('Value is not "Yes"');
                }
            }

答案 1 :(得分:0)

我正在使用Ext JS 6(Sencha),我想根据同一网格中另一列的值是否具有某个值来在网格列中显示图像。我遵循SW4的解决方案,根据我使用的Ext JS版本进行了一些小改动,并且效果很好。谢谢。

Ext.define('ViewLL.view.main.List', {
extend: 'Ext.grid.Panel',
xtype: 'list',

requires: ['App.store.Datastore'],

store:  {type: 'datastore'},

columns: [
        { text: 'Market',
          renderer: function(value, metaData, record, rowIndex) {
           var value = record.get('location');
           if (value == NYC) {
           return '<img src="resources/images/bigApple.jpg"/>';
           }
           else {
           return null;
           }
          }
       },
       { text: 'City', dataIndex: 'location' }
        ]

当City列有记录时,它会在网格列中显示图像文件,其值为NYC。对于所有其他记录,它显示一个空白单元格。