简单的表格json控件

由于最近做的项目一直有表格的形式展示数据,所以想写个简单的关于表格方面的控件出来,想用JSON数据直接渲染出来,因为开发给到我们前端的字段可能会叫不同的名字,所以我们前端渲染页面时候不应该依赖以字段的key值来渲染,也就是说不管开发返回的key键,我这个控件都能满足支持它。所以今天就写了个简单的控件出来,JS代码就100行左右的代码。至于网上很多表格控件支持分页,排序,全选(多选,单选)功能等,而我这个控件只支持渲染表格的控件,且把他们表格渲染数据分离出来,且做只做一件事情,就是渲染JSON数据到表格里面来,如果想支持分页的效果可以看我这篇文章 JS分页请点击!一样的 只是在表格底部多加个分页而已!如果想支持全选效果,请看我这篇文章 全选请点击我!

如果想对表格排序,请看我这篇文章 表格排序请点击我!

下面不多说,请先看JSfiddle效果,效果如下:

JSfiddle请点击我!

当然控件里面也支持渲染单选框或者复选框,只是可以配置参数isRadio为true或者isCheck(复选框)为true即可,如果不需要单选框或者复选框的话,他们都为false,默认情况下都为false。

HTML代码如下:

<table cellspacing = "0" cellpadding = "0">
<thead>
<tr>
<!--<th width="5%">选择</th> -->
<th width="20%">表格控件1</th>
<th width="10%">表格控件2</th>
<th width="20%">表格控件3</th>
<th width="20%">表格控件4</th>
<th width="15%">表格控件5</th>
<th width="15%">表格控件6</th>
</tr>
</thead>
<tbody id="j-tbody"></tbody>
</table>

CSS代码如下:

<style>
table {
width:100%;
border:1px solid #ccc;
border-right:none;
border-bottom:none;
}
table thead th {
font-size:14px;
color: #333;
font-weight:normal;
border-right:1px solid #ccc;
border-bottom:1px solid #ccc;
}
table td{
font-size:12px;
color: #333;
font-weight:normal;
border-right:1px solid #ccc;
border-bottom:1px solid #ccc;
text-align:center;
}
</style>

JS代码如下:

/**
* 简单的表格json数据展示
* @time 2014-4-23
* var data = [
{"parentId":9944267,"categoryName":"创建交易","categoryId":9944343},
{"parentId":9944267,"categoryName":"支付","categoryId":9944344},
{"parentId":9944267,"categoryName":"退款","categoryId":9944344},
{"parentId":9944267,"categoryName":"退款","categoryId":9944344},
{"parentId":9944267,"categoryName":"退款","categoryId":9944344},
{"parentId":9944267,"categoryName":"退款","categoryId":9944344}];
*/ function TableData(options) { this.config = {
container : '#j-tbody', // 默认tbody容器
JSONData : '', // json数据
isRadio : false, // 是否单选
isCheck : false, // 是否多选
callback : null
}; this.cache = { }; this.init(options);
} TableData.prototype = { constructor: TableData, init: function(options) {
this.config = $.extend(this.config,options || {});
var self = this,
_config = self.config; // 渲染表格数据
self._renderHTML();
},
/*
* 渲染tbody里面的数据
* @method _renderHTML
* @private
*/
_renderHTML: function() {
var self = this,
_config = self.config; // 先清空
$(_config.container).html('');
for(var i = 0; i < _config.JSONData.length; i++) {
var tr = document.createElement("tr"),
arrs = self._returnArrs(_config.JSONData[i]);
for(var j = 0; j < arrs.length; j++) {
var td = document.createElement('td');
$(td).html(arrs[j]);
tr.appendChild(td);
}
if(_config.isRadio) {
var radio = $('<td><input type="radio" class=""/></td>');
$(tr).prepend(radio);
}
if(_config.isCheck) {
var radio = $('<td><input type="checkbox" class=""/></td>');
$(tr).prepend(radio);
}
$(_config.container)[0].appendChild(tr);
} // 一次性插入数据 _config.callback && $.isFunction(_config.callback) && _config.callback();
},
/*
* 返回数组
* @private _returnArrs
* @return {arrs} 返回数组
*/
_returnArrs: function(obj){
var arrs = [];
for(var k in obj) {
if(obj.hasOwnProperty(k)) {
arrs.push(obj[k]);
}
}
return arrs;
}
};

JS初始化方式如下:

// 初始化数据
$(function(){
var data = [
{"parentId":9944267,"categoryName":"创建交易","categoryId":"9944343","XX":"111","YY":"XXX","ZZ":'aa1'},
{"parentId":9944268,"categoryName":"支付","categoryId":"9944343","XX":"111","YY":"XXX","ZZ":'aa2'},
{"parentId":9944269,"categoryName":"退款","categoryId":"9944343","XX":"111","YY":"XXX","ZZ":'aa3'},
{"parentId":9944270,"categoryName":"退款","categoryId":"9944343","XX":"111","YY":"XXX","ZZ":'aa4'},
{"parentId":9944271,"categoryName":"退款","categoryId":"9944343","XX":"111","YY":"XXX","ZZ":'aa5'},
{"parentId":9944272,"categoryName":"退款","categoryId":"9944343","XX":"111","YY":"XXX","ZZ":'aa6'}];
new TableData({
JSONData : data
});
});

DEMO下载

简单的表格json控件的更多相关文章

  1. iOS:UITableView表格视图控件

    UITableView:表格视图控件,继承滚动视图控件UIScrollView,(类似于UIPickerView选择器,它主要通过设置数据源代理和行为代理实现协议来设置单元格)    对表格的操作主要 ...

  2. 表格树控件QtTreePropertyBrowser编译成动态库(设计师插件)

    目录 一.回顾 二.动态库编译 1.命令行编译动态库和测试程序 2.vs工具编译动态库和测试程序 3.安装文档 4.测试文档 三.设计师插件编译 1.重写QDesignerCustomWidgetIn ...

  3. Qt实现表格树控件-自绘树节点虚线

    目录 一.开心一刻 二.自绘树节点? 三.效果展示 四.实现思路 1.可扩展接口 2.函数重写 3.同步左侧表头 五.相关文章 原文链接:Qt实现表格树控件-自绘树节点虚线 一.开心一刻 一程序员第一 ...

  4. (转)sl简单自定义win窗体控件

    sl简单自定义win窗体控件      相信大家接触过不少win窗体控件ChildWin子窗口就的sl自带的一个  而且网上也有很多类似的控件,而今天我和大家分享下自己制作个win窗体控件,希望对初学 ...

  5. asp.net学习之 数据绑定控件--表格绑定控件

    原文:asp.net学习之 数据绑定控件--表格绑定控件     数据绑定 Web 服务器控件是指可绑定到数据源控件,以实现在 Web 应用程序中轻松显示和修改数据的控件.数据绑定 Web 服务器控件 ...

  6. 超级实用的表格树控件--QtTreePropertyBrowser

    目录 一.源码下载 二.代码编译 1.intersect函数替换为intersected 2.移除UnicodeUTF8 3.QtGui模块拆分 4.Q_TYPENAME错误 5.qVariantVa ...

  7. Qt实现表格树控件-支持多级表头

    目录 一.概述 二.效果展示 三.实现方式 四.多级表头 1.数据源 2.表格 3.QStyledItemDelegate绘制代理 五.测试代码 六.相关文章 原文链接:Qt实现表格树控件-支持多级表 ...

  8. WPF教程十一:简单了解并使用控件模板

    WPF教程十一:简单了解并使用控件模板 这一章梳理控件模板,每个WPF控件都设计成无外观的,但是行为设计上是不允许改变的,比如使用Button的控件时,按钮提供了能被点击的内容,那么自由的改变控件外观 ...

  9. 自己写的简单的jQuery分页控件

    因为是内部项目,需要分页控件,网上找了一大堆,给领导一看,都说不行,原因很简单,太复杂,领导就想要个简单点的,类似百度的分页,可是自己也没写过Jquery控件,硬着头皮找了些资料,写了这个分页控件,目 ...

随机推荐

  1. 【C#数据结构系列】线性表

    一:线性表 1.1:定义:零个或多个数据元素的有限序列 1.2: 线性表元素个数n定义为线性表的长度,n = 0称为空表,i 为数据元素ai在线性表中的位序. 1.3:满足线性表的条件:(1):有序, ...

  2. Java虚拟机 - Javac编译与JIT编译

    [深入Java虚拟机]之七:Javac编译与JIT编译 编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤 ...

  3. Windows Server 2008R2常见的500错误

    每次公司服务器装系统后再去部署服务,都会碰到这个问题,这里记录一下问题的解决方法 遇到“500 – 内部服务器错误. 您查找的资源存在问题,因而无法显示.”的问题. 解决办法: 1.解决方法:打开II ...

  4. Linux常用基本命令(软链接与硬链接 )

    硬链接:相当于文件的多个入口,作用:备份文件,创建快照等 软链接:相当于windows的快捷方式 命令格式: ln option 源文件 目标文件 -s: 创建软链接 1,创建硬链接: ghostwu ...

  5. POJO、JAVABEAN、*O、EJB

    POJO: 全称:Plain Old Java Object 解释:纯洁老式的java对象.从任何类继承.也没有实现任何接口,更没有被其它框架侵入的java对象 理解:通常我们常说的实体类 BEAN: ...

  6. hightcharts 如何修改legend图例的样式

    正常情况下hightcharts 的legend图形是根据他本身默认的样式来显示,如下图 这几个图形的形状一般也是改不了的,只能根据图表的类型显示默认的.但是我们可以通过修改默认的样式来展示一些可以实 ...

  7. 【代码笔记】iOS-UIActionSheet字体的修改

    一,效果图. 二,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIVi ...

  8. 【代码笔记】iOS-My97DatePicker日历

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  9. JS 数组对象根据下标拆分成新的数组

    真为难啊! var arr = [ {guigeArr:['蓝色','XL','3','S']}, {guigeArr:['蓝色','L','6','S']}, {guigeArr:['蓝色','L' ...

  10. html5的web存储与cookie的区别

    以下从3个方面进行比较: 1,容量:cookie只有4KB,localStorage和sessionStorage最大容量5M 2,是否会携带到ajax中:cookie由每个对服务器的请求来传递,会影 ...