热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

EasyUI:中datagrid数据表格的删除、编辑、保存、撤销功能实现

datagrid格式如下需求1.编辑:选中某一行后,点击编辑可以修改该行值字段。2.保存:编辑完成后,点击保存数据保

datagrid格式如下

在这里插入图片描述


需求


1. 编辑:选中某一行后,点击编辑可以修改该行"值"字段。


2. 保存:编辑完成后,点击保存数据保存。


3. 删除:选中某一行后,点击删除,删除该数据


4. 撤销: 撤销上一次删除


知识点


用到的easyUIAPI


  1. checkbox:复选框
  2. fit:冻结表头
  3. fitColumns:列宽度自适应
  4. singleSelect:行单选
  5. onBeginEdit:当某一行进入编辑模式的时候触发
  6. onAfterEdit:当某一行编辑完成后触发
  7. $('#dataanagrid-content-dg').datagrid('getData')获取表格中的数据,返回结果为对象{total:xx,row:{}}
  8. $('#dataanagrid-content-dg').datagrid('getSelected')获取选中行
  9. $('#dataanagrid-content-dg').datagrid('getRowIndex', selectRow)获取选中行的索引
  10. $('#dataanagrid-content-dg').datagrid('beginEdit', selectIndex);选中行进入编辑模式
  11. $('#dataanagrid-content-dg').datagrid("deleteRow", selectIndex);删除选中行
  12. $('#dataanagrid-content-dg').datagrid('endEdit', selectIndex);选中行退出编辑模式
  13. $("#dataanagrid-content-dg").datagrid("insertRow", { index: deleteRowObj.index, row: deleteRowObj.row });在对应索引行插入数据
  14. $("#dataanagrid-content-dg").datagrid("updateRow", {index: index,row: {"值": newItem,}});更新对应行数据
  15. sessionStorage.setItem("deleteRowInfo", deleteRow);设置sessionStorage中deleteRowInfo值
  16. sessionStorage.getItem("deleteRowInfo");获取sessionStorage中deleteRowInfo值
  17. 字符串转json:let deleteRowObj = JSON.parse(deleteRowInfo);
  18. json转字符串:let jsonRow = JSON.stringify(row);

代码

<button class&#61;"sigle-button" onclick&#61;"$UI.clickButton(&#39;edit&#39;)">编辑button>
<button class&#61;"sigle-button" onclick&#61;"$UI.clickButton(&#39;delete&#39;)">删除button>
<button class&#61;"sigle-button" onclick&#61;"$UI.clickButton(&#39;save&#39;)">保存button>
<button class&#61;"sigle-button" onclick&#61;"$UI.clickButton(&#39;recall&#39;)">撤销button>

$(&#39;#dataanagrid-content-dg&#39;).datagrid({checkbox: true,fit: true,fitColumns: true,singleSelect: true,idField: &#39;传感器&#39;,onBeginEdit: function (index, row) {sessionStorage.setItem("editDataFlag", "true");},onAfterEdit: function (index, row, changes) {let newItem &#61; changes.;newItem &#61; newItem.replace(/(0&#43;)$/g, "");if (newItem.indexOf(".") &#61;&#61;&#61; newItem.length - 1) {newItem &#61; newItem.substring(0, newItem.length - 1);}$("#dataanagrid-content-dg").datagrid("updateRow", {index: index,row: {"值": newItem,}});var row &#61; $("#dataanagrid-content-dg").datagrid(&#39;getData&#39;).rows[index];let data &#61; {&#39;name&#39;: row.传感器.split(":")[0],&#39;paratype&#39;: row.传感器.split(":")[1],&#39;time&#39;: row.时间,&#39;unit&#39;: row.单位,&#39;data&#39;: row.}changeItemData(data, &#39;edit&#39;)sessionStorage.setItem("editDataFlag", "false");$(this).datagrid(&#39;unselectRow&#39;, index);}
});

clickButton &#61; function (tag) {$.ajax({url: &#39;/Search/GetAccountID&#39;,type: &#39;get&#39;,dataType: &#39;text&#39;,async: false,success: function (response) {let selectRow, selectIndex;if (response !&#61;&#61; &#39;管理员&#39;) {editAlert("无权限操作&#xff01;", 500);return;}if (window.sessionStorage.getItem(&#39;dataAnaFlag&#39;) !&#61;&#61; "原始数据生成") {editAlert("只可操作原始数据&#xff01;", 1000);return;}if ($(&#39;#dataanagrid-content-dg&#39;).datagrid(&#39;getData&#39;).total &#61;&#61;&#61; 0) {editAlert("请选择监测站与测计&#xff01;", 1000);return;}if (tag !&#61;&#61; &#39;recall&#39; ) {selectRow &#61; $(&#39;#dataanagrid-content-dg&#39;).datagrid(&#39;getSelected&#39;);selectIndex &#61; $(&#39;#dataanagrid-content-dg&#39;).datagrid(&#39;getRowIndex&#39;, selectRow);if (selectRow.传感器.split(":")[1].indexOf("雨量") !&#61;&#61; -1) {alert("雨量数据不支持编辑与删除&#xff01;")return;}}if (tag &#61;&#61;&#61; &#39;edit&#39;) {let editDataFlag &#61; window.sessionStorage.getItem("editDataFlag");if (editDataFlag &#61;&#61;&#61; "true") {editAlert("请先保存上次更改数据&#xff01;", 1000);return;}if (selectRow &#61;&#61;&#61; null) {editAlert("请选择需要更改的数据&#xff01;", 1000);return;}// 开始编辑$(&#39;#dataanagrid-content-dg&#39;).datagrid(&#39;beginEdit&#39;, selectIndex);} else if (tag &#61;&#61;&#61; &#39;delete&#39;) {if (selectRow &#61;&#61;&#61; null) {editAlert("请选择需要删除的数据&#xff01;", 1000);return;}let row &#61; $("#dataanagrid-content-dg").datagrid(&#39;getData&#39;).rows[selectIndex];$(&#39;#dataanagrid-content-dg&#39;).datagrid("deleteRow", selectIndex);let jsonRow &#61; JSON.stringify(row);let deleteRow &#61; &#96;{"index":"${selectIndex}","row":${jsonRow}}&#96;sessionStorage.setItem("deleteRowInfo", deleteRow);let data &#61; {&#39;name&#39;: row.传感器.split(":")[0],&#39;paratype&#39;: row.传感器.split(":")[1],&#39;time&#39;: row.时间,&#39;unit&#39;: row.单位,&#39;date&#39;: row.}changeItemData(data, &#39;delete&#39;)} else if (tag &#61;&#61;&#61; &#39;save&#39;) {$(&#39;#dataanagrid-content-dg&#39;).datagrid(&#39;endEdit&#39;, selectIndex); } else if (tag &#61;&#61;&#61; &#39;recall&#39;) {let deleteRowInfo &#61; sessionStorage.getItem("deleteRowInfo");if (deleteRowInfo &#61;&#61;&#61; null) {editAlert("未执行删除操作&#xff01;", 1000);return;}let deleteRowObj &#61; JSON.parse(deleteRowInfo);deleteRowObj.row.&#61; Number(deleteRowObj.row.);deleteRowObj.index &#61; Number(deleteRowObj.index);$("#dataanagrid-content-dg").datagrid("insertRow", { index: deleteRowObj.index, row: deleteRowObj.row });sessionStorage.removeItem("deleteRowInfo");let data &#61; {&#39;name&#39;: deleteRowObj.row.传感器.split(":")[0],&#39;paratype&#39;: deleteRowObj.row.传感器.split(":")[1],&#39;time&#39;: deleteRowObj.row.时间,&#39;unit&#39;: deleteRowObj.row.单位,&#39;date&#39;: deleteRowObj.row.}changeItemData(data, &#39;recall&#39;)}}})}

/**
* 数据库操作
* &#64;param {any} options 修改的数据
* &#64;param {any} flag 删/改/增
*/

function changeItemData(options, flag) {let data &#61; {&#39;admi&#39;: options.name,&#39;item&#39;: options.paratype,&#39;time&#39;: options.time,&#39;data&#39;: options.data,&#39;type&#39;: flag}$.ajax({url: &#39;/Monitoring/changeItemData&#39;,type: &#39;post&#39;,dataType: &#39;text&#39;,data: data,async: false,success: function (response) {if (response &#61;&#61; "1") {alert("操作成功!");} else if (response &#61;&#61; "1") {alert("操作失败!");}}})
}

/*** 弹窗* &#64;param {any} msg 弹出语句* &#64;param {any} time 延时*/
function editAlert(msg, time) {$.messager.show({title: &#39;提示&#39;,msg: msg,timeout: time,showType: &#39;slide&#39;,style: {top: document.body.scrollTop &#43; document.documentElement.scrollTop}});
}

推荐阅读
  • 数据库技术:execute immediate
    首先在这里发发牢骚,指责下那些刻板的书写方式,不考虑读者理不理解,感觉就是给专业人员用来复习用的一样,没有前戏,直接就高潮,实在受不了!没基础或基础差的完全不知道发生了什么,一脸懵 ... [详细]
  • 总结一下C中string的操作,来自〈CPrimer〉第四版。1.string对象的定义和初始化:strings1;空串strings2(s1);将s2初始 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文介绍了使用C++Builder实现获取USB优盘序列号的方法,包括相关的代码和说明。通过该方法,可以获取指定盘符的USB优盘序列号,并将其存放在缓冲中。该方法可以在Windows系统中有效地获取USB优盘序列号,并且适用于C++Builder开发环境。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
  • 国庆节到了,安利一个Android的自动动态授权插件
    Android的老铁都知道申请权限时,除了要在AndroidManifest添加权限,还需要在activity中通过requestpermission对 ... [详细]
  • html5 localStorage的读取
    localStorage的读取if(!window.localStorage){alert(浏览器支持localstorage);}else{varstoragewindo ... [详细]
author-avatar
Reaki是睿睿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有