【问题标题】:How to remove a kendo ui grid row based upon a column value如何根据列值删除剑道 ui 网格行
【发布时间】:2016-06-04 11:05:04
【问题描述】:

在 asp.net mvc 视图中,我有一个 Kendo UI 树视图和一个 Kendo UI 网格。树视图中的每个复选框在网格的 ID 列中具有相同的 id 值。每当我取消选中树视图中的复选框时,我想删除网格中具有此 id 值的相应行。 ID 是网格中的列之一。以下是我的代码:

下面的函数是由treeview上的uncheck action执行的

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

显然没有删除网格行。

谢谢

【问题讨论】:

  • dataSource.get 依赖于模型...你能提供所有相关代码吗? (Grid 和 TreeView 定义)

标签: javascript asp.net-mvc kendo-ui kendo-grid


【解决方案1】:

在复选框的更改事件上试试这个:

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() insted 直接从数据源中删除。

Demo

【讨论】:

  • 复选框是树视图的一部分,它是一个单独的控件,而不是网格的一部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多