1

假设我有一个带有 2 列的网格面板:名称和薪水,相应商店的数据索引具有相同的名称

在 extjs 中,渲染器函数是这样的:

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

现在,当我根据属性的名称调用 randerer 时,如果我想做不同的渲染,我该怎么做?例如。

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
}
}

什么是正确的语法?

4

1 回答 1

1

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

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

  1. data -> 是一个带有数据的对象。(使用应该是用这个)
  2. id -> 记录的 ID。这是idProperty在您的商店中指定的
  3. json -> json 格式的数据
  4. 商店 -> 你的商店本身
  5. 原型-> 原型

因此,如果您进行任何比较和检查,您将需要使用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
    }
}

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

于 2011-03-12T05:52:45.507 回答