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

Posted

技术标签:

【中文标题】重新加载 Kendo Grid,而不仅仅是其中的数据【英文标题】:Reload Kendo Grid, not just the data in it 【发布时间】:2014-09-23 04:06:08 【问题描述】:

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

<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 选择时,将调用控制器方法并使用过滤器值设置会话变量。但是,网格不显示任何过滤的数据,因为它之前是使用会话变量的先前值加载的。我希望使用会话变量的新值重新加载它,以便过滤器实际工作。

有人吗?

【问题讨论】:

给你***.com/questions/18399805/… 谢谢@MohitArora,我已经看到了,但它不起作用。它刷新网格中的数据,但不刷新网格本身。我希望网格被完全擦除和重建。我将在问题中添加更多细节,解释我为什么要这样做。 【参考方案1】:

这样试试,

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

【讨论】:

@chiapa 你从服务器端过滤你的数据? 不确定,但我认为是服务器端 @chiapa 这是您的要求,或者您不知道客户端自定义过滤。 不,它可以是任何过滤类型,客户端或服务器端,我不在乎。 @chiapa 我不了解服务器端过滤器,但在客户端过滤器中它工作得非常好。

以上是关于重新加载 Kendo Grid,而不仅仅是其中的数据的主要内容,如果未能解决你的问题,请参考以下文章

内联更新后,Kendo Treelist重新加载/刷新

根据下拉更改绑定/重新绑定 Kendo Grid

如何从控制器更新 Kendo UI Grid 数据源?

如何在加载kendo-grid时显示kendo加载图标?

Kendo Grid - 它自己的加载指示器

ASP.NET MVC - Kendo Grid 慢分页