Jquery 无法使用HandsOnTable删除行

Jquery 无法使用HandsOnTable删除行,jquery,handsontable,Jquery,Handsontable,我无法删除最新版本的行。我正在使用版本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(dat

我无法删除最新版本的行。我正在使用版本
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));
}
有一个类似的问题,但这并不能解决我的目的。此链接上的小提琴与提供的解决方案不兼容


任何帮助都将不胜感激。

所以我猜您想删除最后一行中的一个空行吗

确保未将MinPareRows设置为大于0的值(默认值)。如果minSpareRows大于零,则无法使用alter('remove_row')删除额外的行

我使用此数据模拟最后一行的空值:

var myData = [
    ["", "Kia", "Nissan", "Toyota", "Honda"],
    ["2008", 10, 11, 12, 13],
    ["2009", 20, 11, 14, 13],
    ["2010", 30, 15, 12, 13],
    ["",,,]
];
签出示例。当您单击del link时,它将删除空的最后一行。希望这对你有帮助


按当前状态,
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引用的功能非常强大。然而,幸运的是,我们可以使用

选后结束(r:编号,c:编号,r2:编号,c2:编号)

选择一个或多个单元格后(鼠标向上)激发的回调。

参数:
r
选择开始行
c
选择开始列
r2
选择结束行
c2
选择结束列

据报道,

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


删除给定索引处的行。默认金额等于1

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


这是我为得到想要的结果而做的一个例子

注意:

由于存在错误,我们需要在
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...');   
    }
});
var myData=[
[、“起亚”、“日产”、“丰田”、“本田”],
["2008", 10, 11, 12, 13],
["2009", 20, 11, 14, 13],
["2010", 30, 15, 12, 13]
];
//声明行变量
var row1=null,
row2=null;
var$container=$(“#示例网格”);
$container.handsontable({
数据:myData,
startRows:5,
startCols:5,
minSpareCols:0,
行数:0,
行标题:对,
colHeaders:是的,
上下文菜单:正确,
选择后结束:功能(x1、y1、x2、y2){
//添加此项是因为存在错误
如果((x1-y2)|(x1>x2&&y1>=y2)){
row1=x2;
如果(x2==0)
row2=parseInt(x1+1);
其他的
row2=x1;
}
否则如果(x1y2){
row1=x1;
row2=x2;
}
否则如果(x1>x2&&y1

希望这有帮助,如果你还需要什么,请告诉我

你能举一个例子说明你的表包含什么吗?它是一个没有数据的空表,那么你实际上没有删除任何行。如果您不想显示额外的行和列,请在可手持设备选项中设置
minSpareRows:0
minSpareCols:0
。请查看此项。您可以更改这些选项以查看效果。我试图做的是,我已将
minsSpareRows
设置为1,并在填充数据时添加行。现在,在提交表之前,我不希望出现任何错误。因此,我尝试删除最后一行并验证表单。因为最后一行是空的,所以我总是会得到验证错误。因为这个问题,我无法删除最后一行。@rizwaniqbal当然!如果你还需要什么,请告诉我!