Javascript 基于单元值的dgrid单元颜色
我有一个dgrid,我正在尝试使用格式化程序函数和css根据单元格的值设置单元格背景颜色。dgrid位于ID为UnMarkedTicketGridDiv的div中 格式化程序功能: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
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);
}
}