我有一个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选项时,将调用控制器方法,并使用过滤器值设置会话变量。但是,网格不会显示任何已过滤的数据,因为它之前已使用会话变量的先前值加载。我希望它重新加载会话变量的新值,以便过滤器实际工作。
任何?
答案 0 :(得分:0)
试试这个,
$('#btnReload').click(function (e) {
var grid = $("#datagrid_Roads").data("kendoGrid");
grid.dataSource.filter({});
grid.dataSource.read();
grid.refresh();
});