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

  • 相关阅读:
    HDU 5492 Find a path
    codeforce gym 100548H The Problem to Make You Happy
    Topcoder SRM 144 Lottery
    codeforce 165E Compatible Numbers
    codeforce gym 100307H Hack Protection
    区间DP总结
    UESTC 1321 柱爷的恋爱 (区间DP)
    HDU 4283 You Are the One (区间DP)
    HDU 2476 String painter (区间DP)
    UESTC 426 Food Delivery (区间DP)
  • 原文地址:https://www.cnblogs.com/keke/p/5556934.html
Copyright © 2011-2022 走看看