分享一个我的JavaScript版GridView多功能表格

GridView是什么?

GridView是由Mr.Co开发的一套开源的多功能表格插件,主要用于让页面开发者在开发中节省拼接Table表格和操作Table表格相关复杂操作的开发成本与时间。开发人员可以用GridView快速开发出带有集成编辑、组合表头、分页、表行列操作等一系列功能的GridView。GridView依赖于jQuery类库开发而成,它可以使用在任何Web页面中,比较适合后端项目使用。

主要特点

  • 快速:体积小,加载速度快
  • 开源:开放源代码,高品质
  • 扩展:基于对象库的设计,可根据需求增减功能
  • 风格:修改GridView风格非常容易,只需修改一个 CSS 文件
  • 兼容:支持大部分主流浏览器,比如 IE、Firefox、Safari、Chrome、Opera

快速使用

1 /**引入皮肤样式**/
2 <link href="gridview.css" rel="stylesheet">
3 /**引入jQuery类库**/
4 <script src="jquery.js"></script>
5 /**引入gridview类库**/
6 <script src="gridview.js"></script>
7 /**页面中新增一个容器元素**/
8 <div id="grid"></div>
 1 //初始化
 2 GridView({
 3     container: $('#grid'),
 4     dataSource: [
 5         { 
 6             id: '006', 
 7             name: "张三", 
 8             age: "47", 
 9             sex: '男', 
10             address: "重庆市", 
11             income: '100W' 
12         }
13     ],
14     columns: [
15         { 
16             name: '系统编号', 
17             field: 'id', 
18             order: 0, 
19              100, 
20             titleAlign: 'center', 
21             contentAlign: 'left', 
22             display: '' 
23         },
24         { 
25             name: '年龄', 
26             field: 'age', 
27             order: 2, 
28              60, 
29             titleAlign: 'center', 
30             contentAlign: 'center', 
31             link: '/main.html?key={id}' 
32         }
33     ]
34 });

初始化参数配置

  1 //表格容器
  2 container: $('body')
  3 
  4 //表格唯一ID
  5 id: 'gridView' + parseInt(100000000 * Math.random())
  6 
  7 //是否隐藏表格头部
  8 hidenHead: false
  9 
 10 //是否为组合表头
 11 groupHead: {
 12     //如果为组合表头必须设置为true
 13     isGroup: false,
 14         template: $('#gridview_head').html()
 15 },
 16 
 17 //表格行checkbox是否为单选,false : 非单选  true : 单选
 18 singleSeleted: false
 19 
 20 //表格默认样式名称
 21 className: 'gridView'
 22 
 23 //行间隔-高亮变色行样式名称
 24 columnHighClassName: 'highBack'
 25 
 26 //主键ID,如果不设置将会导致行更新操作时获取不到主键ID
 27 dataKeyID: 'id'
 28 
 29 //当数据不够分页条数行的时候填充空白行
 30 columnFilling: false
 31 
 32 //是否需要显示表格行checkbox可选功能, false : 不显示  true : 显示
 33 selectedColumn: true
 34 
 35 //是否添加行序号, false : 不显示  true : 显示
 36 columnNo: true
 37 
 38 //行合并,默认为全部不合并
 39 mergeRows: {
 40     //是否合并  false : 不合并  true : 合并
 41     isMerge: false,
 42         //需要合并的列索引,不给此属性,默认合并所有列
 43         index: [0, 1, 2, 3, 4, 5]
 44 }
 45 
 46 //数据表格格式设置,表格数据显示规则就靠它了
 47 columns:[
 48     {
 49         //需要映射的字段Key
 50         field:'name',
 51         //表格头部标题
 52         name:'姓名' 53 //表格列排序,数字越小越靠前
 54 order:1,
 55     //表格宽度
 56     200,
 57     //表格头部标题显示位置,属性与CSS中的text-align属性一致
 58     titleAlign:'center',
 59     //表格内容部分显示位置,属性与CSS中的text-align属性一致
 60     contentAlign:'center',
 61     //控制该列是否显示 block 显示 none 不显示
 62     display:'none',
 63     //当该属性存在,clickCallback不存在的时候,当前元素会变成一个超链接
 64     link:'http://www.baidu.com',
 65     //监听当前元素的点击事件
 66     clickCallback:function(){
 67     //当前元素对象
 68     var _$this = $(this);
 69 },
 70 //返回格式化后的数据信息显示到表格中
 71 formatCallback: function ($this) {
 72     return $this.text() == '张三' ? '张三好帅' : '王五好帅';
 73 }
 74 }
 75 ]
 76 
 77 //编辑列设置属性配置
 78 editColumn:[
 79     {
 80         //操作名称
 81         name: '删除',
 82         //操作类型,预定义类型有 delete(删除)、update(表格编辑)、common(自定义)三种类型
 83         type: 'delete',
 84         //当type为delete、update时候需要设置action的ajax请求地址,传参方式在{}括号中填写相对于的数据源中所映射的Key名称便可
 85         action: '/main.ashx?key={id}',
 86         //是否显示操作项
 87         visible: true,
 88         //在操作名称后面追加其它HTML元素,这里我用于做间隔
 89         after: '<span>|</span>',
 90         //在当前操作项中追加一个ICON操作图片,也可以追加其它HTML元素
 91         append: '<img src="btn_save.gif" />',
 92         //监听当前编辑元素的点击事件
 93         clickCallback:function (actionType, actionURL) {
 94             //actionType 获取当前的操作type, 比如delete或者update
 95             //actionURL 获取到解析后的action地址,用于ajax请求
 96             //this为当前编辑元素对象,你拿到它可以做其它相关DOM操作
 97             var _$this = this;
 98         },
 99         //返回格式化后的数据信息替换操作名称
100         formatCallback:function (data) {
101             //data 当前一行的data数据
102             if (data.id == '001')
103                 return '恢复';
104             else
105                 return '删除';
106         }
107     },
108     {
109         //操作名称
110         name: '更新',
111         //操作类型,预定义类型有 delete(删除)、update(表格编辑)、common(自定义)三种类型
112         type: 'update',
113         //定义编辑时显示的表单类型
114         columns: [
115             {
116                 //现在的列索引位置
117                 rowIndex: 1,
118                 //表单类型,可以是所以表单类型,比如select、text、passwod等等
119                 type: 'hidden',
120                 //表单名称
121                 name: 'hidID'
122             },
123             {
124                 //现在的列索引位置
125                 rowIndex: 2,
126                 //表单类型,可以是所以表单类型,比如select、text、passwod等等
127                 type: 'select',
128                 //表单名称
129                 name: 'ddlCity',
130                 //select异步请求数据源的ajax地址
131                 action: '/main.ashx',
132                 //数据对象
133                 dataSource: [
134                     { id: '010', name: '北京市' },
135                     { id: '023', name: '重庆市' }
136                 ],
137                 //select绑定的value
138                 dataKeyID: 'id',
139                 //select绑定的text
140                 dataKeyText: 'name'
141             }
142         ],
143         after: '<span>|</span>',
144         append: '<img src="xg.gif" width="48" height="22" />',
145         saveAppend: '<img src="btn_save.gif" width="48" height="22" />',
146         clickCallback: function (actionType, actionURL) {
147             alert('点击更新');
148             //返回true时,行内会执行colums配置的编辑样式,false时将会被忽略
149             return true;
150         }
151     }
152 ]
153 
154 //分页属性配置
155 pages:{
156     //是否显示分页, block或者不设置display属性 = 显示  none = 不显示
157     display: 'none',
158         //默认页码
159         index: 0,
160         //每页显示条数
161         size: 8,
162         //总条数
163         count: 24,
164         pageClickEvent: function (index/*当前页码*/, grid/*GridView引用对象,用于再次调用绑定表格数据,不调用绑定方法则表格数据不会更新*/) {
165         //在这里写请求后台拿数据的Ajax调用
166         //然后再次调用
167         grid.ResetBindData([{ id: '001', name: "张三", age: "32", sex: '男', address: "北京市", income: '100W' }, { id: '002', name: "王老五", age: "23", sex: '男', address: "重庆市", income: '100W' }]);
168     }
169 }
170 
171 //行单击监听方法
172 columnClickHandle:function(){
173     var _$this = $(this)
174 }
175 
176 //行双击监听方法
177 columnDBClickHandle:function(){
178     var _$this = $(this)
179 }
180 
181 //行复选框的change事件监听方法
182 checkboxChangeHandle:function(){
183     var _checked = data.checked,
184         _value = data.value;
185 }

官网地址:http://gridview.mrco.cn

原文地址:https://www.cnblogs.com/keke/p/5556934.html