asp.net-mvc – Telerik MVC Grid,从自定义命令删除ajax后重新绑
发布时间:2020-12-16 09:24:46 所属栏目:asp.Net 来源:网络整理
导读:我有一个Telerik MVC网格,我试图删除一个项目后重新绑定网格. 这是我的网格: @(Html.Telerik().Grid(Model.Item).Name("Items").Sortable().Scrollable(x = x.Height(400)).Filterable().Pageable(x = x.PageSize(20)).Pageable().Columns(columns ={ colum
我有一个Telerik MVC网格,我试图删除一个项目后重新绑定网格.
这是我的网格: @(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 我究竟做错了什么? 编辑:使用下面的Kirill方法删除我的错误,但网格仍然不刷新,javascript成功调用并获得rebind()命令. 解决方法
您不应该从此方法返回ViewResult.你应该返回JsonResult.
public JsonResult Delete(Guid id) { try { Item item = _itemService.GetOne(x => x.Id == id); _itemService.Delete(item); return Json(new { result = true }); } catch { return Json(new { result = false }); } } 并且onComplete应该是: function onComplete(e) { if (e.name == "Delete") { var result = e.response.result; if(result==true) $("#Items").data("tGrid").rebind(); else{ alert("Error on deleting") } } } UPDATE @(Html.Telerik().Grid<ItemType>.Name("Items") .Sortable().Scrollable(x => x.Height(400)) .Filterable().Pageable(x => x.PageSize(20)) //you should add this line: .DataBinding(dataBinding => dataBinding.Ajax().Select("Select","Items")) .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",new { Area = "Apps" }); } }).Title("Actions"); }) .ClientEvents(events => events.OnComplete("onComplete"))) 你应该添加动作来获取数据到网格: [GridAction] public JsonResult GetChangeHistory(Guid stockCompanyId) { IEnumerable<ItemType> items = ... //code to get items. return Json(new GridModel<ItemType>(items)); } 我假设items集合的元素是ItemType类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 将DataTable从控制器传递到PartialView
- asp.net – 如何在一个新的选项卡中打开asp:HyperLink.Nav
- asp.net应用程序如何工作?
- ASP.Net Webforms和ASP.Net MVC是基于组件还是基于动作?
- asp.net – 插入多行的最佳方式(ADO.NET)
- asp.net-core – 使用.NET Core时需要AssemblyInfo吗?
- asp.net – 在IIS7.5中什么模块删除了400个错误请求的正文
- asp.net-mvc – Html Validate和Html ValidateFor之间的区别
- 使用ASP.NET会话状态服务器(而不是InProc)的优点和缺点?
- Asp.net 文件上传类(取得文件后缀名,保存文件,加入文字水印
推荐文章
站长推荐
- asp.net-mvc – 在ASP.NET MVC项目和Cordova项目
- asp.net – 如何在工作日的特定时间回收应用程序
- asp.net-mvc – 如何在ASP.NET MVC的同一页面中使
- asp.net-mvc – 如何最好在服务器上安装MVC 3?
- .Net Core微服务入门全纪录(一)——项目搭建
- Asp.net成员资格表:aspnet_UsersInRoles未出现在
- ASP.Net MVC:用路由重写
- asp.net-mvc – asp.net MVC 3中视图模型的范围
- asp.net – AppPool关闭自己
- asp.net-mvc – 所有请求获取HTTP错误401.2 – 未
热点阅读