extjs有条件地渲染列

时间:2011-03-11 22:38:47

标签: extjs gridpanel

假设我有一个包含2列的gridpanel:Name和Salary,相应商店的dataIndex具有相同的名称

在extjs中,渲染器功能如下:

function(value, metaData, record, rowIndex, colIndex, store){}

现在,当我根据proeprty的名称调用一个randerer时,如果我想进行不同的渲染,我该怎么办呢? E,G。

function(value, metaData, record, rowIndex, colIndex, store){
if (record.name == 'Salary'|| record.id == 'Salary')
{
//render logic
}
else if (record.name == 'Name'|| record.id == 'Name'){
  //different render logic
}
}

这个的正确语法是什么?

1 个答案:

答案 0 :(得分:1)

嗯,从语法上来说这是正确的。但if语句中的条件不正确。 value变量保存正在呈现的值,因此如果您需要检查它是否相当简单,如果条件。

在您的情况下,您正在尝试提取薪水或姓名? record变量保存整个记录。没有record.name字段。记录对象包含以下字段:

  1. 数据 - >是一个有数据的对象。 (使用应该使用此)
  2. id - >记录的ID。这由您商店中的idProperty指定
  3. json - > json格式的数据
  4. 商店 - >你的商店本身
  5. proto - >原型
  6. 因此,如果您正在进行任何比较并检查,则需要使用record.data.<property-name>

    在您的情况下,您有一个名称和工资的dataIndex,因此代码将是:

    function(value, metaData, record, rowIndex, colIndex, store) {
    
        if(record.data.property == Name) {
                //render logic for name
        }
        else if(record.data.property == Salary) {
                // render logic for salary
        }
    }
    

    最后,此函数将进入列的渲染器属性。