原链接:JQueryEasyUI学习笔记(十)datagrid 添加、修改、删除

基于datagrid框架的删除、添加与修改:

主要是批量删除,双击表单修改、选中行修改,增加行修改,再有就是扩展editor的方法,无需废话,直接上代码,代码中的注释写的很详细:

  1. <script type="text/javascript" charst="utf-8">var editFlag = undefined;//设置一个编辑标记
  2. //因为layout框架指向href时,只取html页面body中间的部分,所以该页面这样写即可
  3. //有datagrid包含属性较多,所以尽量使用js的方式初始化datagrid框架
  4. $(function () {
  5. $("#dg").datagrid({
  6. url: "GetJson.ashx", //指向一个一般处理程序或者一个控制器,返回数据要求是Json格式,直接赋值Json格式数据也可,我以demo中自带的Json数据为例,就不写后台代码了,但是我会说下后台返回的注意事项
  7. iconCls: "icon-add",
  8. fitColumns: false, //设置为true将自动使列适应表格宽度以防止出现水平滚动,false则自动匹配大小
  9. //toolbar设置表格顶部的工具栏,以数组形式设置
  10. idField: 'id', //标识列,一般设为id,可能会区分大小写,大家注意一下
  11. loadMsg: "正在努力为您加载数据", //加载数据时向用户展示的语句
  12. pagination: true, //显示最下端的分页工具栏
  13. rownumbers: true, //显示行数 1,2,3,4...
  14. pageSize: 10, //读取分页条数,即向后台读取数据时传过去的值
  15. pageList: [10, 20, 30], //可以调整每页显示的数据,即调整pageSize每次向后台请求数据时的数据
  16. //由于datagrid的属性过多,我就不每个都介绍了,如有需要,可以看它的API
  17. sortName: "name", //初始化表格时依据的排序 字段 必须和数据库中的字段名称相同
  18. sortOrder: "asc", //正序
  19. columns: [[
  20. {
  21. field: 'code', title: 'Code', width: 100,
  22. editor: {//设置其为可编辑
  23. type: 'validatebox',//设置编辑样式 自带样式有:text,textarea,checkbox,numberbox,validatebox,datebox,combobox,combotree 可自行扩展
  24. options: {}
  25. }
  26. },
  27. {
  28. field: 'name', title: 'Name', width: 100, sortable: true,
  29. editor: {//设置其为可编辑
  30. type: 'validatebox',//设置编辑格式
  31. options: {
  32. required: true//设置编辑规则属性
  33. }
  34. }
  35. },//sortable:true点击该列的时候可以改变升降序
  36. {
  37. field: 'addr', title: 'addr', width: 100,
  38. editor: {//设置其为可编辑
  39. type: 'datetimebox',//这里我们将进行一个datetimebox的扩展
  40. options: {
  41. required: true//设置编辑规则属性
  42. }
  43. }
  44. }
  45. ]],//这里之所以有两个方括号,是因为可以做成水晶报表形式,具体可看demo
  46. toolbar: [{//在dategrid表单的头部添加按钮
  47. text: "添加",
  48. iconCls: "icon-add",
  49. handler: function () {
  50. if (editFlag != undefined) {
  51. $("#dg").datagrid('endEdit', editFlag);//结束编辑,传入之前编辑的行
  52. }
  53. if (editFlag == undefined) {//防止同时打开过多添加行
  54. $("#dg").datagrid('insertRow', {//在指定行添加数据,appendRow是在最后一行添加数据
  55. index: 0, // 行数从0开始计算
  56. row: {
  57. code: '',
  58. name: '请输入姓名',
  59. addr: ''
  60. }
  61. });
  62. $("#dg").datagrid('beginEdit', 0);//开启编辑并传入要编辑的行
  63. editFlag = 0;
  64. }
  65. }
  66. }, '-', {//'-'就是在两个按钮的中间加一个竖线分割,看着舒服
  67. text: "删除",
  68. iconCls: "icon-remove",
  69. handler: function () {
  70. //选中要删除的行
  71. var rows = $("#dg").datagrid('getSelections');
  72. if (rows.length > 0) {//选中几行的话触发事件
  73. $.message.confirm("提示", "您确定要删除这些数据吗?", function (res) {//提示是否删除
  74. if (res) {
  75. var codes = {};
  76. for (var i = 0; i < rows.length; i++) {
  77. codes.push(rows[i].code);
  78. }
  79. console.info(codes.join(','));//拼接字符串并传递到后台处理数据,循环删除,成功后刷新datagrid
  80. }
  81. });
  82. }
  83. }
  84. }, '-', {
  85. text: "修改",
  86. iconCls: "icon-edit",
  87. handler: function () {
  88. //选中一行进行编辑
  89. var rows = $("#dg").datagrid('getSelections');
  90. if (rows.length == 1) {//选中一行的话触发事件
  91. if (editFlag != undefined) {
  92. $("#dg").datagrid('endEdit', editFlag);//结束编辑,传入之前编辑的行
  93. }
  94. if (editFlag == undefined) {
  95. var index = $("#dg").datagrid('getRowIndex', rows[0]);//获取选定行的索引
  96. $("#dg").datagrid('beginEdit', index);//开启编辑并传入要编辑的行
  97. editFlag = index;
  98. }
  99. }
  100. }
  101. }, '-', {
  102. text: "保存",
  103. iconCls: "icon-save",
  104. handler: function () {
  105. $("#dg").datagrid('endEdit', editFlag);
  106. }
  107. }, '-', {
  108. text: "撤销",
  109. iconCls: "icon-redo",
  110. handler: function () {
  111. editFlag = undefined;
  112. $("#dg").datagrid('rejectChanges');
  113. }
  114. }, '-'],
  115. onAfterEdit: function (rowIndex, rowData, changes) {//在添加完毕endEdit,保存时触发
  116. console.info(rowData);//在火狐浏览器的控制台下可看到传递到后台的数据,这里我们就可以利用这些数据异步到后台添加,添加完成后,刷新datagrid
  117. editFlag = undefined;//重置
  118. }, onDblClickCell: function (rowIndex, field, value) {//双击该行修改内容
  119. if (editFlag != undefined) {
  120. $("#dg").datagrid('endEdit', editFlag);//结束编辑,传入之前编辑的行
  121. }
  122. if (editFlag == undefined) {
  123. $("#dg").datagrid('beginEdit', rowIndex);//开启编辑并传入要编辑的行
  124. editFlag = rowIndex;
  125. }
  126. }
  127. });
  128. });
  129.  
  130. //点击查找按钮出发事件
  131. function searchFunc() {
  132. alert("123");
  133. $("#dg").datagrid("load", sy.serializeObject($("#searchForm").form()));//将searchForm表单内的元素序列为对象传递到后台
  134. //这里介绍reload的使用,使用reload时,会默认记住当前页面,当点击查询时,如果我们查到的数据只有三条,我们每页显示10挑数据,当前页码是2,那么我们将无法在当前页面看到我们查询出的结果,只有将页面向前跳转才会看到,但是用load就不会出现这种情况
  135. }
  136.  
  137. //点击清空按钮出发事件
  138. function clearSearch() {
  139. $("#dg").datagrid("load", {});//重新加载数据,无填写数据,向后台传递值则为空
  140. $("#searchForm").find("input").val("");//找到form表单下的所有input标签并清空
  141. }
  142. </script>
  143. <div class="easyui-tabs" fit="true" border="false">
  144. <div title="数据展示表格" border="false" fit="true">
  145. <div class="easyui-layout" fit="true" border="false">
  146. <!--由于查询需要输入条件,但是以toolbar的形式不好,所以我们在Layout框架的头部north中书写查询的相关信息-->
  147. <!-- 这里我们尽量使其展示的样式与toolbar的样式相似,所以我们先查找toolbar的样式,并复制过来-->
  148. <div data-options="region:'north',title:'高级查询'" style="height: 100px; background: #F4F4F4;">
  149. <form id="searchForm">
  150. <table>
  151. <tr>
  152. <th>用户姓名:</th>
  153. <td>
  154. <input name="name" /></td>
  155. </tr>
  156. <tr>
  157. <th>创建开始时间</th>
  158. <td>
  159. <input class="easyui-datetimebox" editable="false" name="subStartTime" /></td>
  160. <!--由于datebox框架上面的数据必须是时间格式的,所以我们用editable="false"来禁止用户手动输入,以免报错-->
  161. <th>创建结束时间</th>
  162. <td>
  163. <input class="easyui-datetimebox" editable="false" name="nsubEndTimeame" /></td>
  164. <td><a class="easyui-linkbutton" href="javascript:void(0);" onclick="searchFunc();">查找</a></td>
  165. <td><a class="easyui-linkbutton" href="javascript:void(0);" onclick="clearSearch();">清空</a></td>
  166. </tr>
  167. </table>
  168. </form>
  169. </div>
  170. <div data-options="region:'center',split:false">
  171. <table id="dg">
  172. </table>
  173. </div>
  174. </div>
  175. </div>
  176. </div>

扩展editor方法:datetimebox

  1. $(function () {
  2. /*扩展Editors的datetimebox方法*/
  3. $.extend($.fn.datagrid.defaults.editors, {
  4. datetimebox: {//为方法取名
  5. init: function (container, options) {
  6. var editor = $('<input />').appendTo(container);
  7. options.editable = false;//设置其不能手动输入
  8. editor.datetimebox(options);
  9. return editor;
  10. },
  11. getValue: function (target) {//取值
  12. return $(target).datetimebox('getValue');
  13. },
  14. setValue: function (target, value) {//设置值
  15. $(target).datetimebox('setValue', value);
  16. },
  17. resize: function (target, width) {
  18. $(target).datetimebox('resize', width);
  19. },
  20. destroy: function (target) {
  21. $(target).datetimebox('destroy');//销毁生成的panel
  22. }
  23. }
  24. });
  25. });

图示:

datagrid 添加、修改、删除(转载)的更多相关文章

  1. JavaWeb_day03_员工信息添加修改删除

    day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ...

  2. Web 1三级联动 下拉框 2添加修改删除 弹框

    Web  三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...

  3. 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件

    第三章 建议学习时间8小时      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demo ...

  4. SpringBoot定时任务升级篇(动态添加修改删除定时任务)

    需求缘起:在发布了<Spring Boot定时任务升级篇>之后得到不少反馈,其中有一个反馈就是如何动态添加修改删除定时任务?那么我们一起看看具体怎么实现,先看下本节大纲: (1)思路说明: ...

  5. 【转】C#添加修改删除文件文件夹大全

    [转]C#添加修改删除文件文件夹大全 C#添加修改删除文件文件夹大全 StreamWriter sw = File.AppendText(Server.MapPath(".")+& ...

  6. oracle 表字段添加 修改 删除语法

    修改列名 alter table 表明 rename column rename 老列名 to 新列名添加 字段alter table 表名 add(字段名 类型):删除字段alter table 表 ...

  7. EF简单的添加修改删除基本语法

    using ( androidhiveEntities db = new androidhiveEntities() )                {                    #re ...

  8. thinkphp 添加 修改删除

    在 MainController.class.php 添加 public function zhuCe() { //时间两个逻辑 // 1 显示页面 2向数据库添加 if(empty($_POST)) ...

  9. JS框架avalon简单例子 行编辑 添加 修改 删除 验证

    为什么要写这个例子:做表单的时候,表单包含主子表,对于子表的编辑,使用的是easyui datagrid的行编辑功能,由于业务比较复杂,实现起来比较麻烦,代码写的也很多,因为插件的封装,无法操作原始的 ...

  10. MySQL 字段常用操作 添加,修改,删除,调整字段顺序

    整理备忘: 添加字段:alter table 表名Add column 字段名 字段类型  默认值 AFTER 字段名 (在哪个字段后面添加) 例子: alter table appstore_sou ...

随机推荐

  1. 复选框选中删除行(DOM练习)

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. ubuntu 下安装Angular2-cli脚手架

    一.首先需要安装node,npm. 请到nodejs官网进行下载并跟据提示进行安装 版本号中间偶数为稳定版本建议下载 https://nodejs.org/en/ node相关操作 https://n ...

  3. LVS+Keepalived实现DBProxy的高可用

    背景 在上一篇文章美团点评DBProxy读写分离使用说明实现了读写分离,但在最后提了二个问题:一是代理不管MySQL主从的复制状态,二是DBProxy本身是一个单点的存在.对于第一个可以通过自己定义的 ...

  4. python——迭代器和生成器

    1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...

  5. 小米Adnroid默认禁止悬浮框的使用,导致开发的悬浮框无法接收事件

    比如你建了一个悬浮框: WindowManager windowManager = getWindowManager(context); int screenWidth = windowManager ...

  6. 学习Spark——环境搭建(Mac版)

    大数据情结 还记得上次跳槽期间,与很多猎头都有聊过,其中有一个猎头告诉我,整个IT跳槽都比较频繁,但是相对来说,做大数据的比较"懒"一些,不太愿意动.后来在一篇文中中也证实了这一观 ...

  7. SDN学习之OpenFlow协议分析

    学习SDN相关的学习也已经有快半年了,期间从一无所知到懵懵懂懂,再到现在的有所熟悉,经历了许多,也走了不少弯路,其中,最为忌讳的便是,我在学习过程中,尚未搞明白OpenFlow协议的情况下,便开始对S ...

  8. single number i && ii && iii

    Problem statement Elementary knowledge: There is a popular question when I seeked my job at Beijing: ...

  9. java基础---->hashMap的简单分析(一)

    HashMap是一种十分常用的数据结构对象,可以保存键值对.它在项目中用的比较多,今天我们就来学习一下关于它的知识. HashMap的简单使用 一.hashMap的put和get方法 Map<S ...

  10. 关于JS面向对象中原型和原型链以及他们之间的关系及this的详解

    一:原型和原型对象: 1.函数的原型prototype:函数才有prototype,prototype是一个对象,指向了当前构造函数的引用地址. 2.函数的原型对象__proto__:所有对象都有__ ...