在网格模板列上渲染条件语句[ExtJS 4.2.1]

时间:2014-02-08 17:12:41

标签: extjs extjs4 extjs4.2

我已成功在普通网格列上呈现条件语句

{
        header: '&nbsp',
        dataIndex: 'status_b2',
        menuDisabled: true,
        flex: 1,
        sortable: false,
        renderer : function(value, meta) {
            var status = value.split("<br/>")[0];

            if (status == "Unset Price"){
                meta.style = "background-color:pink;";
            }
            else if (status == "Available"){
                meta.style = "background-color:green;";
            }else if (status == "Booked Unpaid"){
                meta.style = "background-color:yellow;";
            }else if (status == "Booked Paid"){
                meta.style = "background-color:orange;";
            }else if (status == "Checked In"){
                meta.style = "background-color:red;";
            }else if (status == "Checked Out"){
                meta.style = "background-color:purple;";
            }
            return value;
}

我的问题是如何在templatecolumn网格上使用条件逻辑进行渲染?如果room_status ==“Dirty”,我想将背景颜色添加为红色。

{
            text: 'Room List',
            xtype: 'templatecolumn',
            tpl: 'ROOM {room_number} <br/> {room_type_name} <br/> {bed_type} | {room_status}',
            menuDisabled: true,
            flex: 1,
            sortable: false
 }

2 个答案:

答案 0 :(得分:0)

点击这些链接sencha forumstackoverflow link

我们可以使用一些内联函数并调用它们。请遵循此link。在这些功能中实现你的逻辑。

答案 1 :(得分:0)

我也习惯使用渲染器向单元格添加样式以使其突出显示。实际上,templatecolumn已经有一个默认应用的渲染器,它基本上返回应用于记录的模板。因此,如果您想使用自己的渲染器,您可以从defaultRenderer复制两行代码,或者直接调用列的defaultRenderer:

function customRenderer(value, metaData, record, rowIndex, colIndex, store, view)
{
  if (record.get('severity') == 'critical')
  {
    metaData.tdCls += ' redHighlight';
  }
  return view.panel.columns[colIndex].defaultRenderer(value, metaData, record);
};