细胞功能在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的主要内容,如果未能解决你的问题,请参考以下文章

红细胞的功能是啥?

细胞功能在handsontable

一站式单细胞数据分析软件-OmniAnalyzer全功能介绍(上)

Safari具有识别钓鱼网站的功能么?

Invivoscribe在其位于美国欧洲和中国的参考实验室首次推出12色流式细胞计数功能

玩转单细胞高级分析 单细胞富集分析篇