【问题标题】:How to remove all rows from a Kendo grid如何从剑道网格中删除所有行
【发布时间】:2013-07-28 21:13:34
【问题描述】:

我正在使用Kendo grid

我想使用JavaScript 删除Kendo grid 中的所有行。

我使用 for 循环删除了它们,但我想找到删除所有行的最佳方法。

【问题讨论】:

    标签: javascript jquery kendo-ui kendo-grid


    【解决方案1】:

    尝试按照代码进行操作。

    var grid = $("#Grid").data('kendoGrid');           
    
    grid.dataSource.data([]); 
    grid.setDataSource([]);
    

    演示点击here

    更新:修复排序问题...感谢@Windle

    【讨论】:

    • 这有@PaulGorbas 在his answer 中提到的问题。更新了答案中的小提琴以演示the issue。如果删除所有行,然后单击列标题对数据进行排序,则会返回。
    【解决方案2】:

    这并没有真正移动网格的底层数据,它只是清除了正在显示的行。如果您对“空”网格进行排序,所有行都会从基础数据中重新出现。

    如果不是像这样删除您的数据:

    dataSource.data([]);
    

    而是用一个新的数据数组替换它,比如名为 result.Data.. 像这样:

    dataSource.data(result.Data)
    

    您将看到数据交换,但如果排序或分页,则会再次显示原始数据。

    有人知道如何实际更改数据并让新数据替换网格的源数据吗?

    更新:答案是也使用 setDataSource 方法:

    var grid = $("#grid").data("kendoGrid");
    var dataSource = grid.dataSource;
    dataSource.data([]);//clear out old data
    dataSource.data(result.Data);//add new data
    grid.setDataSource(result.Data);//set the new data as the grids new datasource
    dataSource.sync();//refresh grid
    

    【讨论】:

      【解决方案3】:

      如果您正在使用 Angualrjs,请尝试遵循以下代码:

       $scope.gridData.data([]);
      

      gridDatak-data-source="gridData"

      【讨论】:

        【解决方案4】:

        这对我来说很好。

        var grid = $("#Grid").data("kendoGrid");
        var newDataSource = new kendo.data.DataSource({
            data: []
        });
        grid.setDataSource(newDataSource);
        

        【讨论】:

        • 这会清除网格的架构和传输设置吗?
        • 这完全清除了网格数据源设置。如果您需要使网格再次工作,您需要分配具有正确设置的新数据源。
        猜你喜欢
        • 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
        相关资源
        最近更新 更多