这是我在这里的第一个问题,我决定写作,因为我对此感到疯狂。
我正在使用jQuery handontable,我正在尝试设置特定列的颜色。这个问题是这个列永远不会有相同的索引,因为它是从数据库加载的数据。好吧,我认为我可以在初始化handontable时使用单元格功能。
cells: function (row, col, prop) {
var cellProperties = {};
if (prop==="matsvalue") {
cellProperties.renderer = totalesRenderer; // uses function directly
}
return cellProperties;
}
问题是。如果我有一个用数据定义的列:“matsvalue”。我可以用prop参数来引用它吗?
渲染器,如果我这样做,它正在工作,
cells: function (row, col, prop) {
var cellProperties = {};
if (row===5) {
cellProperties.renderer = totalesRenderer; // uses function directly
}
return cellProperties;
}
第5行采用渲染器
我从数据库中获取列,将其保存在JS对象中并将其推送到像这样的动手列。
var col2 = new Object();
col2.data = "matsvalue";
col2.title = "Mats Value";
col2.width = "200";
col2.readOnly = "true";
col2.renderer = totalesRenderer;
它需要数据和标题,但宽度只读和渲染器选项不起作用。
答案 0 :(得分:0)
查看文档,因为您几乎拥有它。您应该使用columns
而不是单元格,因为您似乎想要为整个列添加颜色。在这种情况下,您可以为每列提供渲染器,以便在创建此列对象时仅检查一次。
Here is an example我认为你想要的事情发生了。请注意,它将绿色渲染器应用于带有标题“matsvalue”的列出现的位置。因此,即使它在另一个位置渲染,它也总是将绿色渲染器设置为标题为“matsvalue”的列。
答案 1 :(得分:0)
我终于做到了。
首先我必须创建渲染器。它唯一能做的就是将“totales”类添加到应用渲染器的“td”元素中。
function totalesRenderer(instance, td, row, col, prop, value, cellProperties) {
Handsontable.renderers.TextRenderer.apply(this, arguments);
$(td).addClass('totales');
}
下一步。我有一个函数,所有的handontable数据都是通过Ajax加载的,当页面准备就绪时会调用此函数。粘贴这里太长了。在这个函数的最后,我写这个。
$("#handsontable").handsontable('updateSettings', {
cells: function (row, col, prop) {
var cellProperties = {};
if (prop === 'suma' || prop === 'valoruni' || prop === 'totalptos' || prop === 'totalmilipuntos' || prop === 'valormatuni') {
cellProperties.readOnly = true;
cellProperties.renderer = totalesRenderer;
}
return cellProperties;
}
});
您可以看到我正在调用“updateSettings”方法。在这里我搜索我桌子的所有单元格,寻找我需要的列,“suma”“valoruni”“totalptos”“totalmilipuntos”和“valormatuni”。当我找到它们时,我应用渲染器并将它们设为readOnly cells。
这样做非常重要,因为如果你在handsontable选项声明中这样做,我们用Ajax获取的数据没有加载到我们的表中,并且永远不会找到带有“suma”“valoruni”“totalptos的列“”totalmilipuntos“和”valormatuni“道具。
我希望这可以帮助任何阅读它的人。