2015-05-26 3 views
0

У меня есть dgrid, и я пытаюсь установить цвет фона ячейки на основе значения ячейки, используя функцию форматирования и css. Dgrid находится в DIV с ID UnMarkedTicketGridDivцветная ячейка dgrid на основе значения ячейки

функции форматировочной:

formatPriority: function (item) { 
      return = "<td class='" + item + "'>" + item + "</td>"; 
     }, 

CSS:

#UnMarkedTicketGridDiv td.NORM 
{ 
    background-color:Green; 
    color:Green; 
} 

Любая идея, почему клетки Арент получения зеленого цвета? Я проверил, что функция форматирования вызывается, и есть элемент с именем «NORM», чтобы этот класс определялся. Я думаю, что что-то с правильной селектором css?

Вот определение столбца сетки:

grid = new (declare([OnDemandGrid, DijitRegistry]))({ 
       store: gridStore, 
       columns: { 
        ID: "ID", 
        Ticket: "Ticket", 
        Street: "Address", 
        DateRcvdInt: { label: "Date Rcvd", formatter: this.formatDate }, 
        WorkDateInt: { label: "Work Date", formatter: this.formatDate }, 
        Priority: { label: "Priority", formatter: this.formatPriority }, 
        Type: "Type", 
        Company: "Company" 
       } 

Благодаря

+0

Вы не должны отображать 'td' из форматирования; сама ячейка таблицы является родительским элементом для вывода форматирования. Вероятно, есть лучший способ сделать то, что вы пытаетесь сделать, возможно, используя 'renderCell'. Можете ли вы также включить определение столбца в вопрос? –

+0

Я поставил определение столбца выше. Я также пробовал использовать тег div в моем funter'е formatter вместо tds, но получил тот же результат - я посмотрю на renderCell - Спасибо! – pvitt

+0

Если вы изменили тип тега, вы также изменили селектор в своем CSS? 'td.NORM' больше не будет соответствовать (и, вероятно, более уместно просто оставить тег из селектора). –

ответ

0

Вообще, самый простой способ сделать это было бы использовать renderCell, что дает прямой доступ к камере:

Priority: { 
    label: "Priority", 
    renderCell: function (object, value, cell) { 
     cell.className += " " + value; 
     return document.createTextNode(value); 
    } 
} 

Обратите внимание, что renderCell может возвращать узел, который должен быть помещен в ячейку. Я использую createTextNode, а не просто устанавливаю innerHTML, поскольку последний потенциально восприимчив к вводу HTML из источника данных.

+0

Это сработало отлично - спасибо! – pvitt

Смежные вопросы