Handsontable Hide Rows和Bold Changed Values

时间:2014-05-28 13:56:27

标签: jquery handsontable

我使用handontable来更改2D数组中的信息。由于数组的大小,我需要有一个滚动条,否则复选框和其他更改需要大约3秒钟来响应。我使用的代码工作正常没有滚动功能,但由于上面的原因它不是一个选项,除非我拆分数组并将它们放在单独的表中,一个接一个地使它看起来像一个表,但这导致其他问题所以宁愿保留滚动条。

我在每行中都有复选框,由渲染器查看。选中后,该行会获得类selected,否则每行都会有类notSelected

Handsontable.renderers.CheckboxRenderer.apply(this, arguments);
if(value==false || value==null) {
    $(td).parent().addClass('notSelected');
    $(td).parent().removeClass('selected');
}else if(value==true){
    $(td).parent().addClass('selected');
    $(td).parent().removeClass('notSelected');
}   

有两个按钮使用它,一个用于显示具有类selected的行,另一个用于将表返回到包含所有行的先前版本,同时将selected类保留在具有它的那些行上。使用以下代码。

$("#showSelected").click(function() {
    $(".notSelected").hide();
});

$("#showAll").click(function() {
    $(".notSelected").show();
});

由于滚动窗口仅呈现屏幕上显示的行,因此仅显示当前窗口中选择的行,我可以向下滚动并呈现两个类的随机数量的行。

另一个问题是,当我在已更改的单元格中粗体显示值时,同一位置的单元格也会变为粗体,例如,如果我更改第4行中的单元格,则为col 5,然后向下滚动每个值在第4行中,尽管没有改变,但是col 5变为粗体。我使用的是此处的代码:How can I change the color of a changed cell in Handsontable? 有没有办法在保持滚动条的同时解决这两个问题?有没有办法告诉最近更改的细胞是什么?或者我是否只需要尝试分解我的数组并制作多个表来解决我的问题?

编辑:感谢更新突出显示代码的人,我现在已经开始工作了。现在只需要隐藏和显示行。

1 个答案:

答案 0 :(得分:1)

解决了这个问题。由于Handsontable的工作原理,无法找到隐藏行的方法,因此复制我的数组data,然后通过它进行交互,拼接任何已经被解密或未被更改的行。

$('#showSelected').click(function(){
    dataTemp = $.extend(true, [], data);
    for(var i=0;i<data.length;i++){
        if(data[i][1]==false||data[i][1]==null){
            var unselected = data.splice(i,1);
            i--;
        }
    }
    $(".handsontable").handsontable('render');
});

为了再次显示,我只是将dataTemp数组放回data由于代码中的其他原因,因此您可以将dataTemp放入loadData,如果它不是别人的问题。

$("#showAll").click(function() {
    var ht =$(".handsontable").handsontable('getInstance');
    data=$.extend(true, [], dataTemp);
    ht.loadData(data);
    $(".handsontable").handsontable('render');
});