Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于单元值的dgrid单元颜色_Javascript_Css_Dojo_Dgrid - Fatal编程技术网

Javascript 基于单元值的dgrid单元颜色

Javascript 基于单元值的dgrid单元颜色,javascript,css,dojo,dgrid,Javascript,Css,Dojo,Dgrid,我有一个dgrid,我正在尝试使用格式化程序函数和css根据单元格的值设置单元格背景颜色。dgrid位于ID为UnMarkedTicketGridDiv的div中 格式化程序功能: formatPriority: function (item) { return = "<td class='" + item + "'>" + item + "</td>"; }, 知道为什么细胞没有变成绿色吗?我已经验证了正在调用formatter

我有一个dgrid,我正在尝试使用格式化程序函数和css根据单元格的值设置单元格背景颜色。dgrid位于ID为UnMarkedTicketGridDiv的div中

格式化程序功能:

formatPriority: function (item) {
            return = "<td class='" + item + "'>" + item + "</td>";
        },
知道为什么细胞没有变成绿色吗?我已经验证了正在调用formatter函数,并且有一个名为“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"
                }

感谢

一般来说,最简单的方法是使用
renderCell
,这样您就可以直接访问单元格:

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

请注意,
renderCell
可以返回要放置在单元中的节点。我使用
createTextNode
而不仅仅是设置
innerHTML
,因为后者可能会受到来自数据源的HTML注入的影响。

您不应该从格式化程序中呈现
td
;表格单元格本身是格式化程序输出的父元素。可能有一种更好的方法来完成您想要做的事情,可能是使用
renderCell
。你能在问题中加入你的列定义吗?我把列定义放在上面。我还尝试在formatter函数中使用div标记而不是tds,但得到了相同的结果--我将查看renderCell--谢谢!如果更改了标记的类型,是否也更改了CSS中的选择器
td.NORM
将不再匹配(而且可能更合适的做法是从选择器中去掉标记)。
Priority: {
    label: "Priority",
    renderCell: function (object, value, cell) {
        cell.className += " " + value;
        return document.createTextNode(value);
    }
}