Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 如何基于列值删除剑道ui网格行_Javascript_Asp.net Mvc_Kendo Ui_Kendo Grid - Fatal编程技术网

Javascript 如何基于列值删除剑道ui网格行

Javascript 如何基于列值删除剑道ui网格行,javascript,asp.net-mvc,kendo-ui,kendo-grid,Javascript,Asp.net Mvc,Kendo Ui,Kendo Grid,在asp.NETMVC视图中,我有一个剑道UI树视图和剑道UI网格。树视图中的每个复选框在网格的id列中具有相同的id值。每当我取消选中treeview中的复选框时,我都想删除网格中具有此id值的对应行。ID是网格中的一列。以下是我的代码: 以下函数由树视图上的取消选中操作执行 function onCheck() { var checkedNodes = [], treeView = $("#treeview").data

在asp.NETMVC视图中,我有一个剑道UI树视图和剑道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);
                            }
                        }
                    }
                }
调试时,var dataItem=$(“#grid”).data(“kendoGrid”).dataSource.get中的dataItem(children[j].id);没有定义。但是,树视图检索到的id与网格中的id匹配。这是我看到的错误:0x800a138f-JavaScript运行时错误:无法获取未定义或空引用的属性“uid”

显然没有删除任何网格行


谢谢

在复选框的更改事件中尝试以下操作:

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 + '"]');
该方法将通过当前
id
在网格中查找相关行。使用网格代替直接从数据源中删除


在复选框的更改事件上尝试以下操作:

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 + '"]');
该方法将通过当前
id
在网格中查找相关行。使用网格代替直接从数据源中删除


dataSource.get
依赖于模型。。。你能提供所有相关代码吗?(网格和树视图定义)
数据源。get
依赖于模型。。。你能提供所有相关代码吗?(网格和TreeView定义)复选框是TreeView的一部分,TreeView是一个单独的控件,而不是网格的一部分。复选框是TreeView的一部分,TreeView是一个单独的控件,而不是网格的一部分。