如何在Ajax调用删除数据库数据后移除Kendo Grid中的行
搞定Kendo Grid:Ajax删除成功后移除对应行的正确姿势
嘿,我明白你折腾这个Kendo Grid删除行的问题有多头疼!之前试了各种方法都没生效对吧?别担心,咱们一步步来解决,核心就是在deleteDataReportRecords里精准拿到要删的行,等Ajax接口返回成功后再调用Grid的移除方法。
第一步:先把要删的行/数据项抓准
不管你是选中单行删除,还是每行自带删除按钮触发操作,首先得正确获取目标行和对应的数据。比如:
function deleteDataReportRecords() { // 先拿到Kendo Grid的实例,这是一切操作的基础! var grid = $("#你的GridID").data("kendoGrid"); // 场景1:选中单行后点击删除按钮 var selectedRow = grid.select(); if (!selectedRow.length) { alert("先选一行再删呀~"); return; } // 从选中行里取出对应的数据项,方便拿要传给接口的标识 var targetData = grid.dataItem(selectedRow); var ttvUids = targetData.TTvUids; // 替换成你实际存唯一标识的字段名 // 场景2:每行自带删除按钮(比如按钮class是delete-btn) // 这种情况可以在按钮点击事件里先拿到行: // var row = $(this).closest("tr"); // var targetData = grid.dataItem(row);
第二步:调用Ajax接口,成功后删行
接下来调用你的ajaxRemoveTTvUidsCall接口,在成功回调里执行Grid的移除操作:
// 调用删除接口,把拿到的ttvUids传进去 ajaxRemoveTTvUidsCall(ttvUids, function(successResponse) { // 这里根据你接口的响应格式判断是否删除成功 if (successResponse.isSuccess) { // 替换成你实际的成功判断条件 // 重点!用Grid的remove方法删掉目标行,两种方式都可以: grid.remove(selectedRow); // 用选中的行元素删 // 或者用数据项删:grid.remove(targetData); alert("删成功啦!"); } else { alert("删除失败:" + successResponse.msg); } }, function(error) { alert("请求出问题啦:" + error.statusText); } ); }
踩坑提醒(这些可能是你之前失败的原因!)
- Grid实例一定要拿对:必须用
$("#GridID").data("kendoGrid"),不能直接用jQuery对象操作,否则调用remove会无效。 - 行元素别拿错:如果是按钮触发,一定要用
closest("tr")找到当前行,不能随便选行,不然删错就麻烦了。 - 作用域别搞混:如果Ajax回调里拿不到Grid或者行对象,记得把这些变量存在闭包里(比如在函数开头定义,别在局部作用域里)。
- 数据源自动同步:只要你用的是Kendo Grid自带的数据源,删除行后数据源会自动更新,不用额外刷新Grid哦~
按照这个流程调整,应该就能解决你之前的问题啦!
内容的提问来源于stack exchange,提问作者Sarah Duffy
相关产品推荐
相关产品推荐

