写一个基于jQuery.easyui 的可编辑表格插件

最近项目前端使用 jquery+easyui来做,用了几个月,觉得easyui是一个很不错的开源前端UI框架,

虽然偶尔会遇到一些小问题,但是凭借多年前端开发的实力积累 都一一解决了,其中比较典型的就是

这个 easyui.editgrid插件了,是基于easyui.datagrid扩展的。其实只用easyui.datarid也能实现

类似的功能,但是速度很慢,用户体验极差,所以抛弃了原来easyui.datagrid  中编辑功能的架构

自己扩展实现了其可编辑部分,就是现在的easyui.editgrid.

说明:默认上下左右键盘切换行和列(可设置),enter键盘切换元素(可设置)

下载地址:http://files.cnblogs.com/dint/jquery_easyuiplus_editgrid.zip

具体实现,熟悉easyui.datagrid的朋友应该一下就能看明白,使用方法和easyui.datagrid大体相同,只不过扩展了些方法和事件:

  1     window.JLBH=1;
  2     window._autoRefresh=false;
  3     function delete_fn_row(jlbh){
  4         var rows = $(‘#dg-dint‘).editgrid(‘getRows‘);
  5         for (var i = 0, il = rows.length; i < il; i++) {
  6             if (rows[i].JLBH == jlbh) {
  7                 var rinx = $(‘#dg-dint‘).editgrid(‘getRowIndex‘,rows[i]);
  8                 $(‘#dg-dint‘).editgrid(‘deleteRow‘, rinx);
  9                 break;
 10             }
 11         }
 12     }
 13     $(function(){
 14     //初始化控件-设置其列名 ,绑定字段等
 15           $(‘#dg-dint‘).editgrid({
 16             title: ‘jquery.easyui.editgrid演示 - http://www.cnblogs.com/dint/‘,
 17             rownumbers: true,
 18             showFooter: true,
 19             height: 330,
 20             width:1000,
 21             remoteSort: true,
 22             singleSelect: true,
 23             onAppendRow:function(nrow){
 24                nrow.JLBH=window.JLBH;
 25                window.JLBH++;
 26             },
 27             kBoard:{
 28                 autoNewRow: true,
 29                 kLeft: 37,
 30                 kTop: 38,
 31                 kRight: 39,
 32                 kDown: 40
 33             },
 34             onRowBlur: function (rowIndex, rowData) {
 35                if(window._autoRefresh===false){
 36                   var crow=$(‘#dg-dint‘).editgrid(‘getRowData‘,rowIndex);
 37                   if(!parseFloat(crow.INTCCC)){
 38                      $(‘#dg-dint‘).editgrid(‘toolTipTim‘,rowIndex,‘列 ‘必须大于零的列’ 的值必须大于0!!!!‘);
 39                      return false;
 40                   }
 41                }
 42             },
 43             columns: [[
 44                 {
 45                     title: ‘DELETE‘, field: ‘DELXXXXXX‘, width: 100, align: ‘center‘,
 46                     formatter: function (val, rowData, rowIndex) {
 47                        return "<a href=‘#‘ onclick=\"delete_fn_row(‘" + rowData.JLBH + "‘)\">删除</a>"
 48                     }
 49                 },
 50                 { title: ‘改变此列的值可以提交给后台‘, field: ‘AAA‘, width: 150, align: ‘center‘,sortable:true,editor:{
 51                      type:‘text‘,
 52                      options:{
 53                        onChange:function(n,o,row){
 54                             var rowIndex =parseInt($(this).parents(‘td[field=AAA]‘).parent().attr(‘datagrid-row-index‘),10);
 55                             row.AAA=n;
 56                             //请求后台数据
 57                             $(‘#dg-dint‘).editgrid(‘postData‘,
 58                              {
 59                                m: ‘POSTDAT-AAA‘,
 60                                d:n,
 61                                rIndex:rowIndex
 62                              },
 63                              ‘Default.aspx‘, function (d) {
 64                                  var data=JSON.parse(d);
 65                                  var rowObj0 = $(‘#dg-dint‘).datagrid(‘getRows‘)[this.mData.rIndex];
 66                                  rowObj0.INTBBB=data.INTBBB;
 67                                  rowObj0.INTCCC=data.INTCCC;
 68                                  rowObj0.GGG=data.GGG
 69                                  rowObj0.FFF=data.FFF;
 70                                  window._autoRefresh=true;                                     //给行赋值后刷新行,ui才能显示
 71                                  $(‘#dg-dint‘).editgrid(‘refreshRow‘, this.mData.rIndex);
 72                                  $(‘#dg-dint‘).editgrid(‘beginEdit‘, this.mData.rIndex);
 73                                  $(‘#dg-dint‘).editgrid(‘rowFocus‘, this.mData.rIndex);
 74                                  window._autoRefresh=false;
 75                              });
 76                        }
 77                   }
 78                 } },
 79                 {
 80                     title: ‘   必须大于零的列  ‘, field: ‘INTCCC‘, width: 100, align: ‘center‘, editor: {
 81                         type: ‘numberbox‘
 82                     }
 83                 },
 84                 {
 85                     title: ‘此列是数字列只能输入数字‘, field: ‘INTBBB‘, width: 150, align: ‘center‘, editor: {
 86                         type: ‘numberbox‘, options: {
 87                             min: 0,
 88                             validType: ‘INTBBB‘,
 89                             onChange: function (n,o,row) {
 90
 91                             }
 92                         }
 93                     }
 94                 },
 95
 96                 {
 97                     title: ‘日期选择列‘, field: ‘DTEDDD‘, width: 100, align: ‘center‘, editor: {
 98                         type: ‘datebox‘
 99                     }
100                 },
101                 { title: ‘EEEE‘, field: ‘EEE‘, width: 100, align: ‘center‘ },
102                 {
103                     title: ‘自定义选择列‘, field: ‘FFF‘, width: 100, align: ‘center‘, editor: {
104                         type: ‘selectbox‘,
105                         options: {
106                             onSelectHandler: function () {
107                                 alert(this.value+‘  ^_^这里可以做很多事情,比如弹出一个选择的对话框‘);
108                             }
109                         }
110                     }
111                 },
112                 { title: ‘GGGG‘, field: ‘GGG‘, width: 100, align: ‘center‘,editor:{type:‘text‘} },
113                 { title: ‘HHHH‘, field: ‘HHH‘, width: 100, align: ‘center‘ },
114                 { title: ‘IIII‘, field: ‘III‘, width: 100, align: ‘center‘ ,editor:{type:‘text‘}},
115                 { title: ‘JJJJ‘, field: ‘JJJ‘, width: 100, align: ‘center‘ },
116                 { title: ‘KKKK‘, field: ‘KKK‘, width: 100, align: ‘center‘ ,editor:{type:‘text‘}},
117                 { title: ‘LLLL‘, field: ‘LLL‘, width: 100, align: ‘center‘ },
118                 { title: ‘MMMM‘, field: ‘MMM‘, width: 100, align: ‘center‘,editor:{type:‘text‘}  },
119                 { title: ‘NNNN‘, field: ‘NNN‘, width: 100, align: ‘center‘ },
120                 { title: ‘OOOO‘, field: ‘OOO‘, width: 100, align: ‘center‘,editor:{type:‘text‘}  },
121                 { title: ‘PPPP‘, field: ‘PPP‘, width: 100, align: ‘center‘ },
122                 { title: ‘QQQQ‘, field: ‘QQQ‘, width: 100, align: ‘center‘,editor:{type:‘text‘} },
123                 { title: ‘RRRR‘, field: ‘RRR‘, width: 100, align: ‘center‘ },
124                 { title: ‘SSSS‘, field: ‘SSS‘, width: 100, align: ‘center‘,editor:{type:‘text‘} },
125                 { title: ‘TTTT‘, field: ‘TTT‘, width: 100, align: ‘center‘ },
126                 { title: ‘UUUU‘, field: ‘UUU‘, width: 100, align: ‘center‘,editor:{type:‘text‘} },
127                 { title: ‘VVVV‘, field: ‘VVV‘, width: 100, align: ‘center‘,editor:{type:‘text‘} },
128                 { title: ‘WWWW‘, field: ‘WWW‘, width: 100, align: ‘center‘ },
129                 { title: ‘XXXX‘, field: ‘XXX‘, width: 100, align: ‘center‘,editor:{type:‘text‘} },
130                 { title: ‘YYYY‘, field: ‘YYY‘, width: 100, align: ‘center‘ },
131                 { title: ‘ZZZZ‘, field: ‘ZZZ‘, width: 100, align: ‘center‘,editor:{type:‘text‘} }
132             ]]
133         });
134         //启用键盘操作,如果不执行这一句 那么不能用键盘在单元格之间切换焦点
135         $(‘#dg-dint‘).editgrid(‘keyBoardInit‘);
136
137         //加载数据
138         $.post(‘Default.aspx?m=DATA‘,function(d){
139            var data=JSON.parse(d);
140            for(var i=0,il=data.length;i<il;i++){
141              $(‘#dg-dint‘).editgrid(‘appendRow‘,data[i]);
142            }
143            $(‘#dg-dint‘).editgrid(‘allBeginEdit‘);
144         });
145
146      });

效果图:

时间: 2024-10-15 02:43:59

写一个基于jQuery.easyui 的可编辑表格插件的相关文章

基于JQuery的可拖动列表格插件TadaTables

前言 最近项目中在使用能够拖动列调整列位置顺序的表格插件---TadaTables,这也是目前我找到的唯一一种存在有这种功能的插件. 在查找使用方法的过程中发现可用案例并不多,且大多言语不详.本文将全面介绍此插件的使用过程. 如果不是有拖动列调整列位置顺序的需求,建议不要使用此插件,坑点较多.后面有事件我写一个名为Bootstrap-table表格插件的使用方法,使用起来比这个插件强多了 正文 英文官网:https://datatables.net/ 中文官网:http://www.datata

一个基于jQuery的简单树形菜单

在工作中的项目使用的是一个前端基于 jQuery easyui 的一个系统,其中左侧的主菜单使用的是 easyui 中的 tree 组件,不是太熟悉,不过感觉不是太好用. 比如 easyui 中的 tree 需要单击分叉节点前的小三角,才能够展开或关闭节点.另外,它还必需要求浏览器在兼容模式下才能正常使用(这个项目中使用的 easyUI 是 1.2.2 版本,新版的 Tree 不存在该问题),很是不方便. 想修改又无从下手,所以有单独写一个简单的树形菜单的想法,趁下班的时间,抽空写了一个简单的J

jWriter一个基于jQuery的阅读写作网站的效果库

看了一下据上次更新已经四个月了,时间过的好快.自从上次面试前端岗时js的能力遭到深深的鄙视后,就在补js的坑了.先是各种看书,接着是期末考试,然后家里有事又耽搁了.在此期间想把用来练手的网站的前端部分重构一下,于是手写了一些jQuery的效果,也就是jWriter了.话说扔了几个月又捡起来的结果就是,看书时都感觉清楚无比的方法什么的全部都忘了,三天不练手生,真理啊. jWriter,一个基于jQuery的阅读写作网站的效果库,用到了部分js原生代码不过都有注释.全部代码都没进行封装过,看起来可能

基于JQuery easyui,gson的批量新增/修改和删除-servlet版

最近项目需要用到在页面进行批量操作,做了一些这方面的学习,参照网上的资料写了个小例子,记录一下: 准备 引入gson-2.6.2.jar,这里使用gson而不使用json-lib,原因是json-lib很老了,依赖的jar在后续与struts2整合时,会出现不兼容的警告.而gson很清爽. 引入jQuery EasyUI 1.4.4 文件结构: package com.tjd.study.easyui.entity; public class Bean { private String code

Jquery easyui开启行编辑模式增删改操作

来源:http://www.cnblogs.com/nyzhai/archive/2013/05/14/3077152.html Jquery easyui开启行编辑模式增删改操作先上图 Html代码: <table id="dd"> </table> 引入JS文件和CSS样式 <script src="http://www.cnblogs.com/Resources/jquery-easyui-1.2.3/jquery-1.4.4.min.js

[转]Jquery easyui开启行编辑模式增删改操作

本文转自:http://www.cnblogs.com/nyzhai/archive/2013/05/14/3077152.html Jquery easyui开启行编辑模式增删改操作先上图 Html代码: <table id="dd"> </table> 引入JS文件和CSS样式 <script src="http://www.cnblogs.com/Resources/jquery-easyui-1.2.3/jquery-1.4.4.min.

一个基于jQuery的弹出层插件XYTips

效果预览:http://www.juheweb.com/js/tc/80.html 标签: jQuery [1].[代码] [JavaScript]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58

手把手写一个基于Spring Boot框架下的参数校验组件

手把手写一个基于Spring Boot框架下的参数校验组件(JSR-303) 前言 之前参与的新开放平台研发的过程中,由于不同的接口需要对不同的入参进行校验,这就涉及到通用参数的校验封装,如果不进行封装,那么写出来的校验代码将会风格不统一.校验工具类不一致.维护风险高等其它因素,于是我对其公共的校验做了一个封装,达到了通过注解的方式即可实现参数统一校验. 遇到的问题                    在封装的时候就发现了一个问题,我们是开放平台,返回的报文都必须是统一风格,也就是类似于{co

easyui datagrid可编辑表格使用经验分享

文章目录 1相关接口方法 2列属性formatter 3编辑器类型 3.1基于my97的编辑器 3.2简单的密码编辑器 3.3动态增加/删除编辑器 4字段的级联操作 4.1combobox的级联操作 4.2文本类型编辑器的级联 4.3编辑字段对非编辑字段的依赖 5数据提交与恢复 5.1利用loading提高用户体验 5.2结束编辑后获取原始数据 6常见问题集锦 6.1表头和数据表格错位 7效果演示 对于Easyui的可编辑表格,个人也是较为陌生的,尽管在操作方式上可能比使用表单修改的方式便捷,但