细胞功能在handsontable
Posted
技术标签:
【中文标题】细胞功能在handsontable【英文标题】:cells function on handsontable 【发布时间】:2015-05-18 21:50:36 【问题描述】:这是我在这里的第一个问题,我决定写,因为我对这个发疯了。
我正在使用 jQuery handsontable,我正在尝试设置特定列的颜色。这样做的问题是该列从不具有相同的索引,因为它是从数据库加载的数据。好吧,当我初始化handsontable 时,我想我可以使用单元格功能来做到这一点。
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;
它需要数据和标题,但只读宽度和渲染器选项不起作用。
【问题讨论】:
【参考方案1】:查看文档,因为您几乎拥有它。您应该使用columns
而不是单元格,因为您似乎想为整个列添加颜色。在这种情况下,您可以为每个列提供一个渲染器,以便在创建此列对象时只检查一次。
Here is an example 我认为你希望发生的事情。请注意,它将绿色渲染器应用于标题为“matsvalue”的列出现的任何位置。所以即使它被渲染在另一个位置,它总是将绿色渲染器设置为标题为“matsvalue”的列。
【讨论】:
感谢您的回答 ZekeDroid。但这对我不起作用,因为我从数据库中获取列,将数据保存在 js 对象上并将其推送到可操作的列。编辑原始问题【参考方案2】:好吧,我终于做到了。
首先我必须创建渲染器。它唯一要做的就是将“totales”类添加到应用渲染器的“td”元素中。
function totalesRenderer(instance, td, row, col, prop, value, cellProperties)
Handsontable.renderers.TextRenderer.apply(this, arguments);
$(td).addClass('totales');
下一步。我有一个函数,所有可操作的数据都是通过 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”。当我找到它们时,我会应用渲染器并将它们设为只读单元格。
这样做很重要,因为如果您在可操作的选项声明中这样做,我们使用 Ajax 获得的数据不会加载到我们的表中,并且永远不会找到带有“suma”“valoruni”“totalptos”的列" "totalmilipuntos" 和 "valormatuni" 道具。
我希望这可以帮助任何阅读它的人。
【讨论】:
啊,很好地解决了这个问题!我还是不太清楚你的问题是关于什么的。只是为了澄清一下,当您对新数据进行 ajax 调用时,它也会更改列本身?所以这是一张全新的桌子?为什么列名会改变?因为 'prop' 是列名。 嗨,在我的情况下,首先我必须通过 Ajax 加载我的表的列。然后我可以得到信息,并与他的专栏链接,这有点令人费解。感谢您的关注!以上是关于细胞功能在handsontable的主要内容,如果未能解决你的问题,请参考以下文章
一站式单细胞数据分析软件-OmniAnalyzer全功能介绍(上)