在asp.net mvc视图中,我有一个Kendo UI树视图和一个Kendo UI网格。树视图中的每个复选框在网格的ID列中具有相同的id值。每当我取消选中treeview中的复选框时,我想删除网格中具有此id值的相应行。 ID是网格中的一列。以下是我的代码:
通过树视图上的取消选中操作执行以下功能
function onCheck() {
var checkedNodes = [],
treeView = $("#treeview").data("kendoTreeView"),
var myNodes = treeView.dataSource.view();
for (var i = 0; i < myNodes.length; i++) {
var children = myNodes[i].children.view();
if (children) {
for (var j = 0; j < children.length; j++) {
if ((typeof children[j].checked !== undefined) && (!children[j].checked)) {
alert("You unchecked " + children[j].id); //This shows the correct id value
var dataItem = $("#grid").data("kendoGrid").dataSource.get(children[j].id);
$("#grid").data("kendoGrid").dataSource.remove(dataItem);
}
}
}
}
以下是网格代码:
$("#grid").kendoGrid({
pageable:true,
dataSource: dataSource, //comes as json from a url
schema: {
model: {
id: "ID"
}
},
pageSize:3,
columns: [
{
hidden: true,
field: "ID"
},
{
field: "MyFileName"
},
});
当我调试时,var dataItem中的dataItem = $(&#34; #grid&#34;)。data(&#34; kendoGrid&#34;)。dataSource.get(children [j] .id);未定义。然而,树视图检索到的id和网格中的id匹配。这是我看到的错误:0x800a138f - JavaScript运行时错误:无法获取属性&#39; uid&#39;未定义或空引用
显然没有网格行被删除。
由于
答案 0 :(得分:2)
在复选框的更改事件中尝试此操作:
var id = treeView.dataItem(this.closest("li")).id;
var gridDataItem = grid.dataSource.data().filter(function(item) {
return item.id == id;
})[0];
grid.removeRow('tr[data-uid="' + gridDataItem.uid + '"]');
filter
方法会在当前id
的网格中找到相关的行。使用网格removeRow()
直接从dataSource中删除。