重新加载 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,而不仅仅是其中的数据的主要内容,如果未能解决你的问题,请参考以下文章