剑道网格 - 获取当前编辑行

Sha*_*les 7 javascript jquery angularjs kendo-grid kendo-datasource

如果未选中当前行,如何编辑当前行?我有一个batch启用的Kendo网格navigatable.我的目标是使用该dataItem.set()方法手动编辑列中的数据.但是,当您添加行时,它不会自动选中.因此,vm.testGrid.dataItem(vm.testGrid.select())不能使用.

vm.testGrid.dataSource.get(e.model.get("Id")) 获取新添加的行,但如果在保存之前添加了多行,它将始终获得第一个添加的行("Id"设置为自动增量并由数据库服务器自动生成,因此所有新创建的行最初将为0在保存之前).

vm.onEdit = function (e) {
    $('input.k-input.k-textbox').blur(function (f) {
        //var data = vm.testGrid.dataItem(vm.testGrid.select());
        var data = vm.testGrid.dataSource.get(e.model.get("Id")); // will always get the firstly added row
        data.set("LookupCol", "1000");
    }
});
Run Code Online (Sandbox Code Playgroud)

有没有更好的解决方案来获取当前编辑的行?或者有更好的方法来编辑当前行吗?

moo*_*moo 5

下面将为您提供与当前单元格关联的数据项:

var dataItem = grid.dataItem(grid.current().closest("tr"));

// You can then set properties as you want.
dataItem.set("field1", "foo");
dataItem.set("field2", "bar");
Run Code Online (Sandbox Code Playgroud)

  • 经过测试后,发现此方法存在问题:当第一个网格出现时,然后按添加->修改输入模板,grid.current()未定义。 (4认同)

Sha*_*les 2

我使用了 JQuery Closest() 函数:

vm.onEdit = function (e) {
    $('input.k-input.k-textbox').blur(function (f) {
        var data = vm.testGrid.dataItem($(e.container).closest("tr"));
        data.set("LookupCol", "1000");
    }
});
Run Code Online (Sandbox Code Playgroud)