gpt4 book ai didi

jquery - 无法使用 HandsOnTable 删除行

转载 作者:行者123 更新时间:2023-12-03 22:41:50 25 4
gpt4 key购买 nike

我无法删除最新版本的行。我使用的是 0.9.9 版本。

这就是我所做的:

var $container = $("#add-table");
$container.handsontable(options);

var handsontable = $container.data('handsontable');
var data = handsontable.getData();
if(data.length > 1 && handsontable.isEmptyRow(data.length-1)) {
handsontable.alter('remove_row', parseInt(data.length-1));
}

Handsontable delete multiple rows 上有类似的问题但这并不能解决我的目的。此链接上的 fiddle 不适用于提供的解决方案。

如有任何帮助,我们将不胜感激。

最佳答案

就目前情况而言,getSelected() 不返回任何内容...

getSelected: function () { 
//https://github.com/warpech/jquery-handsontable/issues/44
//cjl if (selection.isSelected()) {
//return [priv.selStart.row(), priv.selStart.col(), priv.selEnd.row(), priv.selEnd.col()];
//}
}

这是一个大问题,因为 handsontable 引用了该函数很多。不过,幸运的是我们可以使用 afterSelectionEnd event .

afterSelectionEnd (r: Number, c: Number, r2: Number, c2: Number)
Callback fired after one or more cells are selected (on mouse up).

Parameters:
r selection start row
c selection start column
r2 selection end row
c2 selection end column

根据API ,

alter ('remove_row', index: Number, amount: Number (Optional), source: String (Optional))

Remove the row(s) at given index. Default amount equals 1

这意味着为了使用alter('remove_row'),我们只需要提供索引。

<小时/>

这是一个working demo我所做的就是得到想要的结果。

注意:

由于 bug ,我们需要在 afterSelectionEnd 事件中添加一些逻辑。

JavaScript:

var myData = [
["", "Kia", "Nissan", "Toyota", "Honda"],
["2008", 10, 11, 12, 13],
["2009", 20, 11, 14, 13],
["2010", 30, 15, 12, 13]
];

//declare row vars
var row1 = null,
row2 = null;

var $container = $("#exampleGrid");

$container.handsontable({
data: myData,
startRows: 5,
startCols: 5,
minSpareCols: 0,
minSpareRows: 0,
rowHeaders: true,
colHeaders: true,
contextMenu: true,
afterSelectionEnd: function(x1, y1, x2, y2){

//add this because of bug
if( (x1 <= x2 && y1 < y2) || (x1 < x2 && y1 <= y2) || (x1 == x2 && y1 == y2)) {
row1 = x1;
if(x1 == 0)
row2 = parseInt(x2 + 1);
else
row2 = x2;
}
else if( (x1 >= x2 && y1 > y2) || (x1 > x2 && y1 >= y2)) {
row1 = x2;
if(x2 == 0)
row2 = parseInt(x1 + 1);
else
row2 = x1;
}
else if(x1 < x2 && y1 > y2) {
row1 = x1;
row2 = x2;
}
else if(x1 > x2 && y1 < y2) {
row1 = x2;
row2 = x1;
}
}
});

//gets instance of handsontable
var instance = $container.handsontable('getInstance');

$('#delete').click(function(){
if(row1 != null){
if(row2 != null || row2 != row1 ){
instance.alter('remove_row', row1, row2);
}
else{
instance.alter('remove_row', row1);
}
row1 = null;
row2 = null;
}else{
alert('Please select a cell...');
}
});

希望这对您有所帮助,如果您需要任何其他信息,请告诉我!

关于jquery - 无法使用 HandsOnTable 删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17474011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com