extjs 有条件地渲染列
Posted
技术标签:
【中文标题】extjs 有条件地渲染列【英文标题】:extjs conditionally render columns 【发布时间】:2011-03-11 22:38:47 【问题描述】:假设我有一个包含 2 列的网格面板:姓名和工资,相应商店的 dataIndex 具有相同的名称
在 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
正确的语法是什么?
【问题讨论】:
【参考方案1】:嗯,语法上是正确的。但是 if 语句中的条件不正确。 value
变量保存正在呈现的值,因此如果您需要检查它应该是相当简单的 if 条件。
在您的情况下,您正在尝试呈现 Salary 或 Name? record
变量保存整个记录。没有record.name
字段。记录对象包含以下字段:
-
data -> 是一个带有数据的对象。 (使用应该是用这个)
id -> 记录的 ID。这是由您商店中的
idProperty
指定的
json -> json 格式的数据
商店 -> 您的商店本身
原型 -> 原型
因此,如果您要进行任何比较和检查,则需要使用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
最后,这个函数将进入你的列的渲染器属性。
【讨论】:
应该是:record.data.property == 'Name'? (引号或不引号) 我只是放了一个示例条件。它应该根据您的逻辑。如果您正在检查字符串“名称”,那么它应该用引号引起来。以上是关于extjs 有条件地渲染列的主要内容,如果未能解决你的问题,请参考以下文章