即使未选中当前行,如何获取当前行?我有一个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");
}
});
有没有更好的解决方案来获取当前编辑的行?或者有更好的方法来编辑当前行吗?
答案 0 :(得分:4)
以下内容将为您提供与当前单元格关联的数据项:
var dataItem = grid.dataItem(grid.current().closest("tr"));
// You can then set properties as you want.
dataItem.set("field1", "foo");
dataItem.set("field2", "bar");
答案 1 :(得分:2)
我使用了JQuery nearest()函数:
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");
}
});
答案 2 :(得分:0)
您还可以为网格编写扩展名,例如像这样
// extend the grid
kendo.ui.Grid.fn.getCurrentDataItem = function() {
var that = this, current = that.current(), dataItem = null;
if (current) {
dataItem = that.dataItem(current.closest('tr'));
}
return dataItem;
}