Как отформатировать ячейку сетки дерева ExtJS на основе значения в другой ячейке - PullRequest
1 голос
/ 10 марта 2011

Я пытаюсь отформатировать одну ячейку древовидной таблицы 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'
}]

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Ниже представлено решение, которое я разработал, чтобы получить то, что мне нужно, на случай, если у кого-то еще возникнет такая же проблема.

//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},
]
0 голосов
/ 10 марта 2011

Сетка дерева ExtJS немного необычна в том смысле, что она на самом деле не поддерживается, и не ожидается, что она будет полностью поддерживаться до ExtJS 4, и, кроме того, немного не хватает документации XTemplate.

Возможно, вам повезет больше с форматом шаблона:

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