代码之家  ›  专栏  ›  技术社区  ›  Rabegi

重新加载/刷新剑道网格

  •  2
  • Rabegi  · 技术社区  · 8 年前

    我需要重新加载所有网格(不仅仅是数据)。

    我正在尝试:

    $('#GridName').data('kendoGrid').dataSource.read();
    $('#GridName').data('kendoGrid').refresh();
    

    但是 read() 仅重新加载数据和 refresh() 不工作。当用户单击按钮时,我需要用新列重新创建所有表(我不知道有多少列或哪些列,服务器会处理它)。

    用户可以使用html复选框更改他们看到的列。表第一次正确计费时,如果用户更改复选框值,则列不会更改。如果取消选择选项,则列为空,如果用户添加选项,则不会显示新列。

    我怎样才能做到这一点?

    3 回复  |  直到 7 年前
        1
  •  3
  •   Bruno de Andrade    8 年前

    您应该销毁并重新创建网格以更改列。

    $.ajax(
    {
        type: 'GET',
        url: yourURL,
        dataType: 'json',
        success: function (result) {
            $('#Grid').data('kendoGrid').destroy();
            $('#Grid').empty(); //necessary to remove the old html
    
            $("#grid").kendoGrid({
                dataSource: {
                    data: result,
                    schema: {
                        data: "d"
                    }
                }
            });
        }
    });
    

    ajax的结果应该是:

    var result = { 'd': [
        { description: "Description 1", number: 30, price: 3.5 },
        { description: "Description 2", number: 33, price: 4 },
        { description: "Description 3", number: 40, price: 4.5 }
    ]}
    
        2
  •  0
  •   Ross Bush    8 年前

    是否要尝试重新选择最后一条记录?下面的函数使用了与上面描述的相同的方法,并且已经使用了很长时间。你在上面发布的内容应该有用。你为什么说它不起作用?

    function refreshGrid(gridID) {
        var grid = $('#' + gridID).data('kendoGrid');
        var selectedItem = grid.dataItem(grid.select());
        grid.dataSource.read();
        grid.refresh();
        if (selectedItem != null && selectedItem.uid != null) {
            var row = grid.tbody.find('tr[data-uid="' + selectedItem.uid + '"]');
            row.addClass("k-state-selected");
            grid.select(row);
            grid.select(grid.table.find('tr').first());
        }
    }
    
        3
  •  0
  •   Shital Shah    4 年前

    k-rebind=“网格选项”

    每当gridOptions更改时,此事件将重新绑定网格。