jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
(编辑:jimmy 日期: 2024/11/17 浏览:3 次 )
有时候我们的后台系统表单比较复杂,做过进销存或者一些销售订单的都应该有过感觉。
虽然Easyui Datagrid提供了行内编辑,但是不够灵活,但是我们稍微修改一下来达到批量编辑,批量删除,批量添加的效果。
现在我们来看看原的编辑:来自Easyui 1.5.1的Demo <demo/datagrid/rowediting.html>
接下来,我们主要是要高度自由的编辑实现:
1.可以同时追加多行
2.追加的行可以是任何位置
3.可以随时进行编辑任意位置的行
4.保存再统一验证
实现
在原有的rowediting.html进行修改!
第一:修改行的点击事件(点击行的时候进入编辑状态)
function onClickCell(index, field){ if (editIndex != index) { if (endEditing()) { $('#dg').datagrid('selectRow', index) .datagrid('beginEdit', index); var ed = $('#dg').datagrid('getEditor', { index: index, field: field }); if (ed) { ($(ed.target).data('textbox') "" src="/UploadFiles/2021-04-02/2017022014043936.gif">第二:删除事件(点击顶部菜单Remove删除选中的行,点击列表的-号,删除减号行)
function removeit(){ if (editIndex == undefined){return} $('#dg').datagrid('selectRow', editIndex); $('#dg').datagrid('cancelEdit', editIndex) .datagrid('deleteRow', editIndex); editIndex = undefined; }第三:添加事件,点击菜单的Append和+号
function append(){ var index = $('#dg').datagrid('getRowIndex', $('#dg').datagrid('getSelected')); if (index == -1) index = 0; $("#dg").datagrid("insertRow", { index: index+1, row: {oper: "<a href='javascript:append()'>+<a> <a href='javascript:removeit()'>-<a>",status:'P'} }); }第四:保存(获得操作的记录,包括,增加,修改,删除中的记录)
function accept(){ if (endEditing()){ var $dg = $('#dg'); var rows = $dg.datagrid('getChanges'); if (rows.length) { var inserted = $dg.datagrid('getChanges', "inserted"); var deleted = $dg.datagrid('getChanges', "deleted"); var updated = $dg.datagrid('getChanges', "updated"); var effectRow = new Object(); if (inserted.length) { effectRow["inserted"] = JSON.stringify(inserted); } if (deleted.length) { effectRow["deleted"] = JSON.stringify(deleted); } if (updated.length) { effectRow["updated"] = JSON.stringify(updated); } //alert(inserted); //alert(deleted); //alert(updated); } } //$.post("/Home/Commit", effectRow, function (rsp) { // if (rsp) { // $dg.datagrid('acceptChanges'); // bindData(); // } //}, "JSON").error(function () { // $.messager.alert("提示", "提交错误了!"); //}); }最后我们可以获得,上面操作的,所有:添加的行,删除的行,更新的行!把数据传入到数据后台进行处理!
最后你还需要对数据进行循环校验,可以获得数据,在控制台输出:
console.log(inserted); console.log(deleted); console.log(updated);总结:
最后完整代码:(替换Easyui的rowediting.html可运行效果)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Row Editing in DataGrid - jQuery EasyUI Demo</title> <link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css" rel="external nofollow" > <link rel="stylesheet" type="text/css" href="../../themes/icon.css" rel="external nofollow" > <link rel="stylesheet" type="text/css" href="../demo.css" rel="external nofollow" > <script type="text/javascript" src="/UploadFiles/2021-04-02/jquery.min.js">以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇:原生node.js案例--前后台交互
在去年的5月23日,借助Intel Bridge Technology以及Intel Celadon两项技术的驱动,Intel为PC用户带来了Android On Windows(AOW)平台,并携手国内软件公司腾讯共同推出了腾讯应用宝电脑版,将Windows与安卓两大生态进行了融合,PC的使用体验随即被带入到了一个全新的阶段。