如何根据另一个单元格中的值格式化 ExtJS 树网格单元格

发布于 2024-10-21 13:48:50 字数 555 浏览 4 评论 0原文

我正在尝试根据同一行中另一个单元格中的值来格式化一个 ExtJS 树形网格单元格。下面是我目前如何编码的概述。然而,这目前不起作用,所以我将不胜感激任何建议。谢谢!

function fn(v, values){
    if (values.alarm == 1) {
        return '<span style="color: red;">' + v + '</span>';
    }
    return v;
}

//new treegrid

columns:[{
    header: 'H1',
    width: 60,
    dataIndex: 'duration1',
    align: 'center',
    tpl: new Ext.XTemplate(
        '{duration1:this.doFormat}',
        {doFormat: fn()}
    )
}, {
    header: 'A1',
    width: 60,
    dataIndex: 'alarm1',
    align: 'center'
}]

I am trying to format one ExtJS treegrid cell based on the value in another cell in the same row. Below is an overview of how I currently have it coded. However, this is not currently working so I would appreciate any suggestions.Thanks!

function fn(v, values){
    if (values.alarm == 1) {
        return '<span style="color: red;">' + v + '</span>';
    }
    return v;
}

//new treegrid

columns:[{
    header: 'H1',
    width: 60,
    dataIndex: 'duration1',
    align: 'center',
    tpl: new Ext.XTemplate(
        '{duration1:this.doFormat}',
        {doFormat: fn()}
    )
}, {
    header: 'A1',
    width: 60,
    dataIndex: 'alarm1',
    align: 'center'
}]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凡尘雨 2024-10-28 13:48:50

以下是我开发的解决方案,以便在其他人遇到相同问题时获得所需的内容。

//Treegrid formatting function
function fn(v, values){
    i = i + 1;
    switch(i){
        case 1: x = values.alarm1; break;
        case 2: x = values.alarm2; break;
        default: alert("x not assigned value");
    }
    if (x == 1) {return '<span style="background-color: red; width: 100%">' + v + '</span>';}
    else if(i == currenthour)
        {return '<span style="background-color:' + currentcolor + '; width: 100%">' + v + '</span>';}
    else
        {return '<span style="background-color:' + basecolor + '; width: 100%">' + v + '</span>';}  
}

//create the treegrid
columns:[
        {header: 'Name',dataIndex: 'name',width: 210},
        {header: 'H1', width: 60, dataIndex: 'duration1', align: 'center',              
            tpl: new Ext.XTemplate('{duration1:this.doFormat}', {doFormat: fn})},
            {header: 'A1', width: 0,dataIndex: 'alarm1' , visibility: false},
        {header: 'H2', width: 60, dataIndex: 'duration2',align: 'center',
            tpl: new Ext.XTemplate('{duration2:this.doFormat}', {doFormat: fn})},
            {header: 'A2', width: 0,dataIndex: 'alarm2' , visibility: false},
]

Below is the solution I developed to get what I needed in case anyone else has the same issue.

//Treegrid formatting function
function fn(v, values){
    i = i + 1;
    switch(i){
        case 1: x = values.alarm1; break;
        case 2: x = values.alarm2; break;
        default: alert("x not assigned value");
    }
    if (x == 1) {return '<span style="background-color: red; width: 100%">' + v + '</span>';}
    else if(i == currenthour)
        {return '<span style="background-color:' + currentcolor + '; width: 100%">' + v + '</span>';}
    else
        {return '<span style="background-color:' + basecolor + '; width: 100%">' + v + '</span>';}  
}

//create the treegrid
columns:[
        {header: 'Name',dataIndex: 'name',width: 210},
        {header: 'H1', width: 60, dataIndex: 'duration1', align: 'center',              
            tpl: new Ext.XTemplate('{duration1:this.doFormat}', {doFormat: fn})},
            {header: 'A1', width: 0,dataIndex: 'alarm1' , visibility: false},
        {header: 'H2', width: 60, dataIndex: 'duration2',align: 'center',
            tpl: new Ext.XTemplate('{duration2:this.doFormat}', {doFormat: fn})},
            {header: 'A2', width: 0,dataIndex: 'alarm2' , visibility: false},
]
如歌彻婉言 2024-10-28 13:48:50

ExtJS 树网格有点不寻常,因为它并没有得到真正的支持,预计直到 ExtJS 4 才会得到完全支持,此外,XTemplate 文档也有点缺乏。

使用以下模板格式可能会更好:

tpl: new Ext.XTemplate('{[this.doFormat(values.duration1)]}', {
    doFormat: fn
})

The ExtJS tree grid is a bit unusual in that it isn't really supported, and is not expected to be fully supported until ExtJS 4, and, in addition, the XTemplate documentation is a bit lacking.

You may have better luck with the following template format:

tpl: new Ext.XTemplate('{[this.doFormat(values.duration1)]}', {
    doFormat: fn
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文