Javascript 如何动态更改单元格格式
我已经用dojo实现了一个datagrid,它每5秒更新一次。我使用以下代码来更新datagridJavascript 如何动态更改单元格格式,javascript,css,dojo,dojox.grid,dojox.grid.datagrid,Javascript,Css,Dojo,Dojox.grid,Dojox.grid.datagrid,我已经用dojo实现了一个datagrid,它每5秒更新一次。我使用以下代码来更新datagrid jsonStore.fetch({ query: {id:'*'}, onComplete: function(items, result){ dojo.forEach(items, function(item){ jsonStore.setValue(item, "time" , data.update[0].net
jsonStore.fetch({
query: {id:'*'},
onComplete: function(items, result){
dojo.forEach(items, function(item){
jsonStore.setValue(item, "time" , data.update[0].netchange);
.....
“data”是我需要设置到网格的新数据,网格是一个json对象,如下所示
var data = {"update":[{...}]}
如果netchage为负数,我需要将单元格颜色设置为红色。如果netchange为正值,则应为绿色。所以我需要一种动态改变单元格格式的方法。谁能告诉我怎么做。提前谢谢
grid4 = new dojox.grid.DataGrid({
query : {
Title : '*'
},
id : "grid",
jsId : "grid",
clientSort : true,
rowSelector : '0px',
structure : layout4
}, document.createElement('div'));
grid4.setStore(jsonStore);
dojo.byId("gridContainer4").appendChild(grid4.domNode);
var layout4 = [ {
field : 'time',
name : 'time',
width : '40px',
formatter: geticon()
}, {
field : 'netchange',
name : 'netchange',
width : '30px'
} ];
在我回答这个问题之前,当你说“动态更改单元格格式”时,这只是一个小小的误称 您不是在更改单元格的格式化程序,而是在更改单元格的样式 每次将值加载到单元格中时,都会调用格式化程序。此外,对单元格所在的行调用onStyleROw函数 这意味着您有两个用于更改单元格颜色的选项。您可以在单元格范围内执行此操作,也可以让格式化程序执行一些简单的操作,例如使用具有不同样式颜色的
包装值。我给你们两个看
这是第一个不更改任何现有网格代码的解决方案,它将使用onStyleRow更改整行
解决方案1使用onStyleRow
第一步。(连接onStyleRow)
connect(grid4,“onStyleRow”,styleRowGridPayment)
第二步。(创建您的styleRowGridPayment
方法。)
请注意,我添加了formatNetchange作为格式化程序
然后您只需创建格式化程序
formatNetchange = function(value){
if(value < 0){
color = "red";
} else {
color = "green";
}
return "<span style='color:" + color "'>" + value "</span>";
}
formatNetchange=函数(值){
如果(值<0){
color=“红色”;
}否则{
color=“绿色”;
}
返回“+值”;
}
在我回答问题之前,当你说“动态更改单元格格式”时,这只是一个小小的误称
您不是在更改单元格的格式化程序,而是在更改单元格的样式
每次将值加载到单元格中时,都会调用格式化程序。此外,对单元格所在的行调用onStyleROw函数
这意味着您有两个用于更改单元格颜色的选项。您可以在单元格范围内执行此操作,也可以让格式化程序执行一些简单的操作,例如使用具有不同样式颜色的
包装值。我给你们两个看
这是第一个不更改任何现有网格代码的解决方案,它将使用onStyleRow更改整行
解决方案1使用onStyleRow
第一步。(连接onStyleRow)
connect(grid4,“onStyleRow”,styleRowGridPayment)
第二步。(创建您的styleRowGridPayment
方法。)
请注意,我添加了formatNetchange作为格式化程序
然后您只需创建格式化程序
formatNetchange = function(value){
if(value < 0){
color = "red";
} else {
color = "green";
}
return "<span style='color:" + color "'>" + value "</span>";
}
formatNetchange=函数(值){
如果(值<0){
color=“红色”;
}否则{
color=“绿色”;
}
返回“+值”;
}
答案将在您的DataGrid配置中。你应该把它贴出来。@Hemlock我已经更新了帖子。顺便说一下,你的布局是错误的。除非geticon()返回函数,否则您不会传递处理程序,而是直接从格式化程序中调用函数。从geticon中删除()应该没问题。我在这里尝试过回答它,答案将在DataGrid配置中。你应该把它贴出来。@Hemlock我已经更新了帖子。顺便说一下,你的布局是错误的。除非geticon()返回函数,否则您不会传递处理程序,而是直接从格式化程序中调用函数。从geticon中删除()应该没问题。我已经尝试在这里回答了
formatNetchange = function(value){
if(value < 0){
color = "red";
} else {
color = "green";
}
return "<span style='color:" + color "'>" + value "</span>";
}