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

时间:2014-07-31 09:13:18

标签: javascript jquery kendo-ui kendo-grid

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

<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中对我不起作用,如this question I asked before中所示我仍未找到解决方案。自定义过滤器是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选项时,将调用控制器方法,并使用过滤器值设置会话变量。但是,网格不会显示任何已过滤的数据,因为它之前已使用会话变量的先前值加载。我希望它重新加载会话变量的新值,以便过滤器实际工作。

任何?

1 个答案:

答案 0 :(得分:0)

试试这个,

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