Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SlickGrid无法删除添加的行,但只能删除现有行。我做错了什么?_Javascript_Jquery_Slickgrid - Fatal编程技术网

Javascript SlickGrid无法删除添加的行,但只能删除现有行。我做错了什么?

Javascript SlickGrid无法删除添加的行,但只能删除现有行。我做错了什么?,javascript,jquery,slickgrid,Javascript,Jquery,Slickgrid,以下是我添加行的代码: grid.onAddNewRow.subscribe(function (e, args) { var item = args.item; id=id+1; item["id"] = "id_"+id; grid.invalidateRow(data.length); data.push(item); dataView.beginUpdate(); dataView.endUpdate(); grid.upd

以下是我添加行的代码:

grid.onAddNewRow.subscribe(function (e, args) {
    var item = args.item;
    id=id+1;
    item["id"] = "id_"+id;
    grid.invalidateRow(data.length);
    data.push(item);
    dataView.beginUpdate();
    dataView.endUpdate();
    grid.updateRowCount();
    grid.render();
});
if ((event.which == 46)) {
    $(".slick-cell.selected").parent().each(function() {
        var item = dataView.getItem($(this).attr("row"));
        var rowid = item.id;
        dataView.deleteItem(rowid);
        grid.invalidate();
        grid.render();
    });
}
下面是我删除一行的代码:

grid.onAddNewRow.subscribe(function (e, args) {
    var item = args.item;
    id=id+1;
    item["id"] = "id_"+id;
    grid.invalidateRow(data.length);
    data.push(item);
    dataView.beginUpdate();
    dataView.endUpdate();
    grid.updateRowCount();
    grid.render();
});
if ((event.which == 46)) {
    $(".slick-cell.selected").parent().each(function() {
        var item = dataView.getItem($(this).attr("row"));
        var rowid = item.id;
        dataView.deleteItem(rowid);
        grid.invalidate();
        grid.render();
    });
}
这适用于已经存在的行,但不适用于添加的行。由于某些原因,
变量对于新行是未定义的。我做错了什么

编辑 谢谢你,锡!所以我有了一个解决办法:

      grid.onAddNewRow.subscribe(function (e, args) {
        var item = args.item;
        id=id+1;
        item["id"] = "id_"+id;
        data.push(item);
        dataView.beginUpdate();
        dataView.setItems(data);
        dataView.endUpdate();
      });

if((event.which==46)){
var rows=grid.getSelectedRows();
对于(变量i=0,l=rows.length;i
您似乎在代码中做了很多对我来说没有意义的事情:

在onAddNewRow处理程序中,您是:

  • 使正在添加的行无效。为什么?你不需要那样做
  • 您直接更新“数据”数组,但随后对“数据视图”执行无操作调用。您使用什么作为数据源-数据或数据视图
  • 您不需要告诉网格updateRowCount()或render()
  • 在删除处理程序中:

  • 不要直接访问SlickGrid DOM(即$(“.slick cell.selected”)!使用grid.getSelectedRows()代替
  • 如果您使用“dataView”作为数据源,那么您应该已经连接了事件以侦听dataView更改并根据需要更新网格。不需要调用grid.invalidate()和grid.render()

  • 旁注:您的代码似乎包含多余的
    }
    括号。已编辑的代码。我的错误。在我的代码中没有这样的错误