我有一个 Telerik MVC Grid,我试图在删除项目后重新绑定网格。
这是我的网格:
@(Html.Telerik().Grid(Model.Item).Name("Items").Sortable().Scrollable(x => x.Height(400)).Filterable().Pageable(x => x.PageSize(20))
.Pageable()
.Columns(columns =>
{
columns.Bound(x => x.Equipment.Location.Building.Name).Title("Building");
columns.Bound(x => x.Equipment.Location.Room).Width(150);
columns.Bound(x => x.Number).Title("Number").Width(150);
columns.Command(commands =>
{
if (Model.CanViewHistory)
{
commands
.Custom("ViewHistory")
.Text("History")
.ButtonType(GridButtonType.Text)
.SendState(false)
.DataRouteValues(x => x.Add(y => y.Id).RouteKey("id"))
.Action("Index", "ItemHistory");
}
if (Model.CanEdit)
{
commands
.Custom("Edit")
.Text("Edit")
.ButtonType(GridButtonType.Image).ImageHtmlAttributes(new { @class = "t-icon t-edit t-test" })
.DataRouteValues(x => x.Add(y => y.Id).RouteKey("id"))
.SendState(false)
.Action("Save", "Items");
commands
.Custom("Delete").HtmlAttributes(new { onclick = "return confirm('Are you sure you want to delete this item?')" })
.Text("Delete").Ajax(true)
.ButtonType(GridButtonType.Image).ImageHtmlAttributes(new { @class = "t-icon t-delete t-test" })
.DataRouteValues(x => x.Add(y => y.Id).RouteKey("id"))
.SendState(false)
.Action("Delete", "Items", new { Area = "Apps" });
}
}).Title("Actions");
}).ClientEvents(events => events.OnComplete("onComplete")))
我在删除执行后调用的方法是:
<script type="text/javascript">
function onComplete() {
$("#Items").data("tGrid").rebind();
}
</script>
行动:
public ActionResult Delete(Guid id)
{
Item item = _itemService.GetOne(x => x.Id == id);
_itemService.Delete(item);
return RedirectToAction("Index");
}
该操作有效,该项目确实被删除,但网格没有刷新,只有在手动重新加载页面后,已删除的项目才会消失。在我的控制台中,当我单击删除按钮时,我收到以下错误:
Uncaught ReferenceError: xhr is not defined telerik.grid.min.js:1
我究竟做错了什么?
编辑:使用下面的基里尔方法消除了我的错误,但网格仍然没有刷新,javascript 被成功调用并进入rebind()
命令。