我使用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? 有没有办法在保持滚动条的同时解决这两个问题?有没有办法告诉最近更改的细胞是什么?或者我是否只需要尝试分解我的数组并制作多个表来解决我的问题?
编辑:感谢更新突出显示代码的人,我现在已经开始工作了。现在只需要隐藏和显示行。
答案 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');
});