【问题标题】:Get Row Number with Handsontable使用 Handsontable 获取行号
【发布时间】:2016-02-24 20:33:52
【问题描述】:

这里是超级菜鸟问题。我有一组行索引,我想用它们来更改我的 Handsontable 行的颜色。我认为 HOT 会提供一种方法来检索具有 hot.getRow(5) 之类的表的 tr 元素,但它似乎不存在。

所以简而言之,我正在尝试这样做

var rowIds = []
$.each(rowIds , function (i, element) {
    var row = hot.getRow(i);
    $(row).closest('tr').css('color','green');
});

我发现我可以使用getCell() 方法,它接受行和列# 以及布尔值,但是使用它需要额外的代码来处理应该像传递单个参数一样简单的事情。有没有我忽略的方法或者这是唯一的方法?

【问题讨论】:

    标签: javascript jquery handsontable


    【解决方案1】:

    HOT 的工作原理是这样的:它是一个 JS 对象,它呈现一个无状态的 DOM 表。这意味着您永远不应该尝试手动修改表格的 HTML。即使您确实想这样做,只要您对这些绿色单元格进行更改,它们就会重新渲染,而不是绿色。

    相反,您希望使用与每个列或单元格相关联的易于访问的“自定义渲染器”,具体取决于您如何定义它们。这些应用就像columnscells 定义中的data 属性一样。它们是函数,下面是一个例子:

    function greenCellRenderer(instance, td, row, col, prop, value, cellProperties) {
        Handsontable.renderers.TextRenderer.apply(this, arguments);
        td.style.color = 'green';
    }
    

    您应该阅读完整的文档以了解渲染器的全部功能,但从参数中可以清楚地看出您可以做什么。您可以做的一件事是应用您希望的绿色。当然,要选择性地执行此操作,您可以将渲染器应用于特定单元格,或者使用 rowcol 参数在此通用渲染器中放置一个条件,这对您有利。

    希望有帮助!

    【讨论】:

    • 感谢 Zeke,我是 HOT 的新手,对于所有新框架,我有一千个问题。可以在加载表后声明这些自定义渲染器吗?即,说 $.ajax() 调用的成功或失败,该调用已从修改的表实例中持久化数据?
    • 是的,有一个强大的方法叫做updateSettings,它可以让你更新任何原始设置。您可以使用新的渲染器更新 columnscells。但是,我建议保留所有“列入黑名单”的单元格的地图并让 ajax 调用更新它。然后在你的渲染器中,检查当前的[row,col] 是否在这个地图中,如果是,应用一些逻辑。这样您就不必一直更新渲染器。但是更新渲染器也是一个不错的方法。
    猜你喜欢
    • 2020-03-01
    • 1970-01-01
    • 2011-03-13
    • 2018-08-17
    • 2018-01-10
    • 2015-11-14
    • 2014-06-26
    • 2013-07-02
    • 2015-08-12
    相关资源
    最近更新 更多