zoukankan      html  css  js  c++  java
  • 分享一个我的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

  • 相关阅读:
    【神经网络与深度学习】leveldb的实现原理
    【神经网络与深度学习】【CUDA开发】caffe-windows win32下的编译尝试
    【神经网络与深度学习】【CUDA开发】caffe-windows win32下的编译尝试
    【Qt开发】QString与数字类型的转换(不同进制)
    【Qt开发】QString与数字类型的转换(不同进制)
    【Qt开发】QT中用函数把float转化成QString
    【Qt开发】QT中用函数把float转化成QString
    【Qt开发】QTextEdit 外观属性设置
    【Qt开发】QTextEdit 外观属性设置
    oracle启动、关闭
  • 原文地址:https://www.cnblogs.com/keke/p/5556934.html
Copyright © 2011-2022 走看看