重新加载Kendo Grid,而不仅仅是其中的数据

Reload Kendo Grid, not just the data in it

本文关键字:不仅仅是 数据 Grid 新加载 加载 Kendo      更新时间:2023-09-26

我有一个剑道网格:我如何在点击按钮后重新加载整个网格?按钮在这里:

<input type="button" id="btnReload" name="reload" value="Reload" />

下面是处理按钮点击的函数:

$('#btnReload').click(function (e) {
    var grid = $("#datagrid_Roads").data("kendoGrid");
    //grid.reload();
    grid.dataSource.page(1);
    grid.dataSource.read();
});

好,上面的操作刷新了网格中的数据。我想要的是类似于注释代码的东西(在上面的块),所以整个网格被重新加载,而不仅仅是其中的数据。

我该怎么做?

编辑

我想这样做的原因是因为我想为我的网格做一个自定义过滤器,因为网格的内置过滤器功能在Internet Explorer中不适合我,正如我之前问的这个问题所看到的那样,我仍然没有找到的解决方案。自定义过滤器是具有不同过滤值的DropDownList。(在我的情况下,是所列道路所属的特许权)

以下是网格规格:

<div id="datagrid">
    @(Html.Kendo().Grid<SustIMS.Models.RoadModel>()
        .Name("datagrid_Roads")
        .Columns(columns =>
        {
            columns.Bound(r => r.RoadCode).Title(ViewBag.lblCode).Width(140);
            columns.Bound(r => r.RoadType).Title(ViewBag.RoadType).Width(140);
            ...
            columns.Bound(r => r.ConcessionMediumDescription).Title(ViewBag.Concession);
        })
        .HtmlAttributes(new { style = "height: 534px;" })
        ...
        .DataSource(dataSource => dataSource
            .Ajax()
            .Filter(filters =>
            {
                filters.Add(road => road.ConcessionMediumDescription).Contains(Session["concessionFilter"].ToString());
            })
            .PageSize(15)
            .Read(read => read.Action("GetRoads", "MasterData"))
        )
    )
</div>

可以看到,我设置了一个过滤器,它是一个会话变量,默认情况下设置为DropDownList的第一项。

当用户更改DropDownList选择时,将调用控制器方法并使用过滤器值设置会话变量。但是,网格没有显示任何过滤过的数据,因为它之前是用会话变量的前一个值加载的。我想用会话变量的新值重新加载它,以便过滤器实际工作。

有人知道吗?

试一下,

 $('#btnReload').click(function (e) {
  var grid = $("#datagrid_Roads").data("kendoGrid");         
  grid.dataSource.filter({});
  grid.dataSource.read();
  grid.refresh();
});