如何使用Javascript重新加载或刷新Kendo Grid?
在一段时间后或用户操作后,通常需要重新加载或刷新网格。
如何使用Javascript重新加载或刷新Kendo Grid?
在一段时间后或用户操作后,通常需要重新加载或刷新网格。
您可以使用
$('#GridName').data('kendoGrid').dataSource.read(); <!-- first reload data source -->
$('#GridName').data('kendoGrid').refresh(); <!-- refresh current UI -->
我从不刷新。
$('#GridName').data('kendoGrid').dataSource.read();
独处总是适合我。
在最近的一个项目中,我必须根据一些下拉选择调用来更新Kendo UI网格。以下是我使用的代码:
$.ajax({
url: '/api/....',
data: { myIDSArray: javascriptArrayOfIDs },
traditional: true,
success: function(result) {
searchResults = result;
}
}).done(function() {
var dataSource = new kendo.data.DataSource({ data: searchResults });
var grid = $('#myKendoGrid').data("kendoGrid");
dataSource.read();
grid.setDataSource(dataSource);
});
希望这能节省您一些时间。
$('#GridName').data('kendoGrid').dataSource.read();
$('#GridName').data('kendoGrid').refresh();
这些答案中没有一个意识到read
返回一个Promise,这意味着您可以在调用刷新之前等待数据加载。
$('#GridId').data('kendoGrid').dataSource.read().then(function() {
$('#GridId').data('kendoGrid').refresh();
});
如果您的数据获取是即时/同步的,那么这是不必要的,但很可能来自于一个不会立即返回的终端点。
如果您不想在处理程序中引用网格,请使用此代码:
$(".k-pager-refresh").trigger('click');
如果有刷新按钮,这将刷新网格。可以像这样启用该按钮:
[MVC GRID DECLARATION].Pageable(p=> p.Refresh(true))
实际上它们是不同的:
$('#GridName').data('kendoGrid').dataSource.read()
刷新了表格行的 uid
属性。
$('#GridName').data('kendoGrid').refresh()
不改变 uid
。
var searchResults = null;
$.ajax({
url: http://myhost/context/resource,
dataType: "json",
success: function (result, textStatus, jqXHR) {
//massage results and store in searchResults
searchResults = massageData(result);
}
}).done(function() {
//Kendo grid stuff
var dataSource = new kendo.data.DataSource({ data: searchResults });
var grid = $('#doc-list-grid').data('kendoGrid');
dataSource.read();
grid.setDataSource(dataSource);
});
@(Html.Kendo().Grid<Models.DocumentDetail>().Name("document")
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Model(model => model.Id(m => m.Id))
.Events(events => events.Sync("KendoGridRefresh"))
)
.Columns(columns =>
{
columns.Bound(c => c.Id).Hidden();
columns.Bound(c => c.UserName).Title(@Resources.Resource.lblAddedBy);
}).Events(e => e.DataBound("onRowBound"))
.ToolBar(toolbar => toolbar.Create().Text(@Resources.Resource.lblNewDocument))
.Sortable()
.HtmlAttributes(new { style = "height:260px" })
)
您可以在任何.js文件中添加以下全局函数。因此,您可以调用它来刷新项目中的所有kendo网格。
function KendoGridRefresh() {
var grid = $('#document').data('kendoGrid');
grid.dataSource.read();
}
我使用Jquery .ajax获取数据。为了将数据重新加载到当前网格中,我需要执行以下操作:
.success (function (result){
$("#grid").data("kendoGrid").dataSource.data(result.data);
})
read
将请求服务器和重新加载 仅仅 数据源。界面不会有任何改变。refresh
将从当前数据源重新渲染网格中的项。这就是为什么两者都是必需的。 - macwier