news 2026/4/18 3:34:58

jQuery EasyUI 应用 - 创建 CRUD 数据网格(DataGrid)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jQuery EasyUI 应用 - 创建 CRUD 数据网格(DataGrid)

jQuery EasyUI 应用 - 创建 CRUD 数据网格(DataGrid)

在上一个教程中,我们使用了dialog弹窗来实现 CRUD 操作。本教程将展示如何直接在DataGrid中实现可编辑的 CRUD 功能,即“行内编辑”(inline editing)模式,用户可以直接点击单元格编辑数据,而无需弹出对话框。

这种方式更紧凑、直观,适合数据列表密集的场景。我们将使用 EasyUI 的datagrid内置编辑器(editor)来实现创建(append 新行)、读取(加载数据)、更新(编辑行)和删除(remove 行)操作。

官方教程参考:https://www.jeasyui.com/tutorial/app/crud2.php(Build CRUD DataGrid with jQuery EasyUI)

步骤 1: 引入 EasyUI 资源

使用最新版本的 CDN(截至 2025 年,EasyUI 仍在维护,推荐使用官网 CDN 或下载最新包):

<linkrel="stylesheet"type="text/css"href="https://www.jeasyui.com/easyui/themes/default/easyui.css"><linkrel="stylesheet"type="text/css"href="https://www.jeasyui.com/easyui/themes/icon.css"><scripttype="text/javascript"src="https://code.jquery.com/jquery-1.12.4.min.js"></script><scripttype="text/javascript"src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
步骤 2: 创建可编辑 DataGrid

<th>中定义editor属性来指定每个列的编辑器类型。

<tableid="dg"title="My Users"style="width:700px;height:400px"toolbar="#toolbar"idField="id"rownumbers="true"fitColumns="true"singleSelect="true"><thead><tr><thfield="firstname"width="50"editor="{type:'validatebox',options:{required:true}}">First Name</th><thfield="lastname"width="50"editor="{type:'validatebox',options:{required:true}}">Last Name</th><thfield="phone"width="50"editor="text">Phone</th><thfield="email"width="80"editor="{type:'validatebox',options:{validType:'email'}}">Email</th></tr></thead></table><divid="toolbar"><ahref="javascript:void(0)"class="easyui-linkbutton"iconCls="icon-add"plain="true"onclick="append()">Append Row</a><ahref="javascript:void(0)"class="easyui-linkbutton"iconCls="icon-remove"plain="true"onclick="removeit()">Remove Row</a><ahref="javascript:void(0)"class="easyui-linkbutton"iconCls="icon-save"plain="true"onclick="accept()">Accept Changes</a><ahref="javascript:void(0)"class="easyui-linkbutton"iconCls="icon-undo"plain="true"onclick="reject()">Reject Changes</a></div>
步骤 3: JavaScript 实现行内 CRUD 操作
<scripttype="text/javascript">vareditIndex=undefined;functionendEditing(){if(editIndex==undefined){returntrue}if($('#dg').datagrid('validateRow',editIndex)){$('#dg').datagrid('endEdit',editIndex);editIndex=undefined;returntrue;}else{returnfalse;}}functiononClickCell(index,field){if(editIndex!=index){if(endEditing()){$('#dg').datagrid('selectRow',index).datagrid('beginEdit',index);vared=$('#dg').datagrid('getEditor',{index:index,field:field});if(ed){($(ed.target).data('textbox')?$(ed.target).textbox('textbox'):$(ed.target)).focus();}editIndex=index;}else{$('#dg').datagrid('selectRow',editIndex);}}}functionappend(){if(endEditing()){$('#dg').datagrid('appendRow',{});editIndex=$('#dg').datagrid('getRows').length-1;$('#dg').datagrid('selectRow',editIndex).datagrid('beginEdit',editIndex);}}functionremoveit(){if(editIndex==undefined){return}$('#dg').datagrid('cancelEdit',editIndex).datagrid('deleteRow',editIndex);editIndex=undefined;}functionaccept(){if(endEditing()){$('#dg').datagrid('acceptChanges');// 这里可以提交所有更改到服务器,例如:// var rows = $('#dg').datagrid('getChanges');// $.post('save_changes.php', {data: JSON.stringify(rows)}, function(result){ ... });}}functionreject(){$('#dg').datagrid('rejectChanges');editIndex=undefined;}$(function(){$('#dg').datagrid({onClickCell:onClickCell});});</script>
关键说明
  • 点击单元格编辑:通过onClickCell事件实现点击即编辑。
  • 新增行append()添加空行并进入编辑模式。
  • 删除行:选中行后删除(实际项目中需确认并调用服务器删除)。
  • 保存更改acceptChanges()确认所有编辑。实际应用中,需要调用getChanges()获取修改的行(inserted/updated/deleted),然后 AJAX 提交到后端(如 PHP 的save_user.php)。
  • 后端支持:后端需处理批量保存(例如接收 JSON 数据,进行 insert/update/delete)。
高级扩展
  • 服务器端加载数据:添加url="get_users.php"支持分页和远程加载。
  • 自动保存:在onAfterEdit事件中 AJAX 保存单行。
  • 另一种方式:使用edatagrid扩展(需额外引入 datagrid-editable.js),它内置更多 CRUD 方法,如$('#dg').edatagrid({saveUrl:'save.php', destroyUrl:'delete.php'});

更多示例:

  • 官方行内编辑 CRUD:https://www.jeasyui.com/tutorial/app/crud2.php
  • 展开行编辑:https://www.jeasyui.com/tutorial/app/crud3.php

如果需要结合服务器端 PHP/MySQL 示例、批量保存代码,或其他变体(如搜索+分页),请提供更多细节!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 17:19:42

EmotiVoice语音合成跨设备一致性验证:手机、音箱、耳机播放无差异

EmotiVoice语音合成跨设备一致性验证&#xff1a;手机、音箱、耳机播放无差异技术背景与核心挑战 在今天的智能交互场景中&#xff0c;用户早已不满足于“能说话”的语音助手。他们希望听到的不只是信息&#xff0c;而是一种带有情绪、个性和温度的声音——就像真人对话那样自然…

作者头像 李华
网站建设 2026/4/18 3:26:46

语音克隆身份验证机制:确保授权使用的安全流程

语音克隆身份验证机制&#xff1a;确保授权使用的安全流程 在AI语音技术飞速发展的今天&#xff0c;我们已经可以仅凭几秒钟的录音&#xff0c;精准复现一个人的声音——语调、节奏、音色几乎毫无差别。这种能力让虚拟主播、有声书创作和游戏角色配音变得前所未有的生动&#x…

作者头像 李华
网站建设 2026/4/17 17:33:46

计算广告:智能时代的营销科学与实践(十八)

目录 10.4 统计模型分布式优化框架 1. 为什么需要分布式优化&#xff1f;广告数据的双重挑战 2. 核心范式&#xff1a;数据并行 vs. 模型并行 3. 参数服务器架构&#xff1a;工业界的支柱 4. 面向广告稀疏特征的优化 5. 主流框架与Lambda架构实践 6. 总结&#xff1a;从算…

作者头像 李华
网站建设 2026/4/18 3:33:01

速藏!从CRUD到AI:4年后端程序员转大模型,3个月拿30K

还在为重复的CRUD业务感到麻木&#xff1f;担心35岁职场危机提前到来&#xff1f;我&#xff0c;一名做了4年Java后端的程序员&#xff0c;曾困在“增删改查”的循环里看不到头&#xff0c;直到下定决心转大模型&#xff0c;3个月后成功拿到月薪30K的应用开发offer。今天把我的…

作者头像 李华
网站建设 2026/4/18 3:28:31

EmotiVoice语音合成在直播带货中的虚拟主播语音支持

EmotiVoice语音合成在直播带货中的虚拟主播语音支持 在一场持续12小时的直播间里&#xff0c;镜头前的“她”始终神采奕奕&#xff1a;开场时热情洋溢&#xff0c;讲解产品时温柔细致&#xff0c;促销倒计时时语气急促、情绪高涨——然而这位主播从未休息&#xff0c;也无需饮食…

作者头像 李华
网站建设 2026/4/18 3:26:47

通达信买入副图

{}N:18; M1:3;M2:3; RSV1:(CLOSE - LLV(LOW,N))/(HHV(HIGH,N) - LLV(LOW,N))*100; K1:EMA(RSV1,M1); D1:EMA(K1,M2); J1:(3*K1-2*D1); 火山:IF(J1<0,20,0); KDJ1:REF(COUNT(J1<REF(J1,1),5)>3,1) AND REF(J1,1)<20; KDJ2:J1>REF(J1,1); 反转:IF(FILTER(KDJ1 AND…

作者头像 李华