将新行添加到SlickGrid

时间:2013-08-07 15:58:07

标签: slickgrid

您好我已尝试过这两个代码在slickgrid中插入新行。

码-1:

data1.push({id: "12345", name: "secKey", field: "secKey", complete:true});
        //grid1.setData(data1);
        //grid1.render();

它在光滑的网格单元中以未定义的形式插入..

代码-2:

 try{
            var rowData = grid1.getData();
            //alert(rowData+"rowdata");

            newId = dataView1.getLength();
            //alert(newId);
            newRow.id = newId + 1;
            //alert(newRow.id);
            var newRow = {title: "new Title"};
            //alert(newRow);
            dataView1.insertItem(newRow.id, newRow);
            alert("end");
            }catch(e){
                alert("error:"+e.description);
            }

代码-2捕获并给出错误..我知道我必须做代码更改。!

3 个答案:

答案 0 :(得分:10)

如果您使用的是数据视图,则可以按照以下步骤进行操作

function AddNewRow() {
    dataView.addItem({id: "12345", name: "secKey", field: "secKey", complete:true});
    dataView.refresh();
}

如果您不使用数据视图,则可以按照以下方式执行,

    function AddNewRow() {
        grid.getData().splice(grid.getDataLength(), 1, {});
        grid.invalidateRow(grid.getSelectedRows());
        grid.updateRowCount();
        grid.render();
    }

答案 1 :(得分:1)

如果您使用的是Slick.DataView,则应使用.addItem方法

dataView.beginUpdate();
dataView.addItem(item);
dataView.endUpdate();

答案 2 :(得分:0)

这就是我使用Jatin的答案(没有数据视图):

slickgrid.onAddNewRow.subscribe(function (e, args) {
        var newRow = args.item;
        newRow.prop1= true;
        newRow.prop2= false;
        newRow.prop3= 0;
        newRow.prop4= "";

        args.grid.getData().splice(args.grid.getDataLength(), 1, newRow);
        args.grid.invalidateRow(args.grid.getDataLength() - 1);
        args.grid.updateRowCount();
        args.grid.render();
    });