jquery插入复杂表格,合并行列
此方法为个人测试所写,针对各种兼容性问题还未测试,初写的目的是easyui复杂表头有些缺陷,比如某个表头合并两列,
在easyui中这样操作无法绑定两个值 或者说我没找到 再或者 可以做个隐藏 数据列 ,不过闲来无事 自己写了写jquery,下面进入正题
先展示下效果
指标性选择为 表头的隐藏用 (客户要求可自定义表头,在extjs中表单自带这个功能,不过复杂表头好像也不支持,单行表头判断条件少的多,比较好实现)
从图片中 可以看到 复杂表头,数据自动合并列,某列比值变红,自定义变红 等功能实现,下面逐步展示代码
<div id="Zj" style="width: auto;">
<asp:CheckBoxList ID="ZjCheck" runat="server" Font-Size="Small">
<asp:ListItem Value="30MW" Text="30MW"></asp:ListItem>
<asp:ListItem Value="60MW" Text="60MW"></asp:ListItem>
<asp:ListItem Value="20MW" Text="20MW"></asp:ListItem>
<asp:ListItem Value="其他" Text="其他"></asp:ListItem>
</asp:CheckBoxList>
</div>
<div id="Tx" style="width: auto;">
<asp:CheckBoxList ID="TxCheck" runat="server" Font-Size="Small">
<asp:ListItem Value="湿法脱硫" Text="湿法脱硫"></asp:ListItem>
<asp:ListItem Value="60MW" Text="干法脱硫"></asp:ListItem>
<asp:ListItem Value="20MW" Text="循环流化床"></asp:ListItem>
</asp:CheckBoxList>
</div>
<div id="TL" style="width: auto;">
<asp:CheckBoxList ID="TLCheck" runat="server" Font-Size="Small">
<asp:ListItem Value="湿法脱硫" Text="SCR"></asp:ListItem>
<asp:ListItem Value="60MW" Text="LNB+SCR"></asp:ListItem>
</asp:CheckBoxList>
</div>
<div id="TreeHeaddiv" style="width: 240px; left: 830px;">
<ul id="TreeHead" class="ztree">
</ul>
</div> <div id="panel" class="easyui-panel" title="查询条件" style="width: 1100px; padding: 10px; margin-bottom:20px;">
<div style="float: left">
<label id="Label1" runat="server" for="dateD">
起始时间:</label>
<input type="text" id="dateSatar" style="text-align: center;" runat="server" onfocus="WdatePicker({skin:'whyGreen',maxDate:'#F{$dp.$D(\'dateEdd\')}',dateFmt:'yyyy-MM-dd'})"
class="Wdate" /> 至
<input type="text" id="dateEdd" style="text-align: center;" runat="server" onfocus="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d', minDate:'#F{$dp.$D(\'dateSatar\')}',dateFmt:'yyyy-MM-dd'})"
class="Wdate" />
<a href="javascript:void(0)" id="btnJZ" class="easyui-linkbutton" onclick="showMenu('btnJZ','Zj')">
机组容量</a> <a href="javascript:void(0)" id="btnTL" class="easyui-linkbutton" onclick="showMenu('btnTL','TL')">
脱硫方式</a> <a href="javascript:void(0)" id="btnTX" class="easyui-linkbutton" onclick="showMenu('btnTX','Tx')">
脱销方式</a> <a href="javascript:void(0)" id="btnItem" class="easyui-linkbutton" onclick="showMenu('btnItem','TreeHeaddiv')">
指标项选择</a>
</div>
<div style="float: right;">
<a href="javascript:void(0)" id="Serach" class="easyui-linkbutton">查询</a>
</div>
</div>
<div style="width:1100px">
<table id="table">
<thead id="thead">
<tr>
<td rowspan="3" style=" width:40px;">
序号
</td>
<td rowspan="3" style=" width:132px;">
二级公司/机组名称
</td>
<td rowspan="2">
所属火电机组台数
</td>
<td rowspan="2">
所属火电机组容量
</td>
<td colspan="6" style=" width:390px;">
脱硫系统运行情况
</td>
<td colspan="6" style=" width:390px;">
脱硝系统运行情况
</td>
</tr>
<tr>
<td >
投运率
</td>
<td>
综合效率
</td>
<td>
停运次数
</td>
<td>
停运台均次
</td>
<td>
停运时间
</td>
<td>
停运台均时间
</td>
<td >
投运率
</td>
<td>
综合效率
</td>
<td>
停运次数
</td>
<td>
停运台均次
</td>
<td>
停运时间
</td>
<td>
停运台均时间
</td>
</tr>
<tr class="lasttr">
<td>
台
</td>
<td>
MW
</td>
<td>
%
</td>
<td>
%
</td>
<td>
次
</td>
<td>
次/台
</td>
<td>
小时
</td>
<td>
小时/台
</td>
<td>
%
</td>
<td>
%
</td>
<td>
次
</td>
<td>
次/台
</td>
<td>
小时
</td>
<td>
小时/台
</td>
</tr>
</thead> </table>
</div>
</div>
web页面布局
指标性按钮针对的tree的绑定
var Theadsetting = {
check: {
enable: true
},
data: {
simpleData: {
enable: true
}
},
callback: { onCheck: onCheck
} };
TreeSetting
var zNodes = [
{ id: 1, pId: 0, name: "全选", open: true },
///脱硫情况
{id: "SO", pId: 1, name: "脱硫系统运行情况", open: true },
{ id: "4", pId: "SO", name: "投运率" },
{ id: "5", pId: "SO", name: "综合效率" },
{ id: "6", pId: "SO", name: "停运次数" },
{ id: "7", pId: "SO", name: "停运台均次" },
{ id: "8", pId: "SO", name: "停运时间" },
{ id: "9", pId: "SO", name: "停运台均时间" }, ///脱硝系统运行情况
{id: "No", pId: 1, name: "脱硝系统运行情况", open: true },
{ id: "10", pId: "No", name: "投运率" },
{ id: "11", pId: "No", name: "综合效率" },
{ id: "12", pId: "No", name: "停运次数" },
{ id: "13", pId: "No", name: "停运台均次" },
{ id: "14", pId: "No", name: "停运时间" },
{ id: "15", pId: "No", name: "停运台均时间" }
];
treeNode
//表头节点点击事件
function onCheck(e, treeId, treeNode) { ItemHide(GetMultItemValues("TreeHead"));
}
treeNode点击事件
//隐藏表格
function ItemHide(NodeIs) { $("#thead tr").eq(0).find("td").eq(4).attr("colspan", 6);
$("#thead tr").eq(0).find("td").eq(4).css("width", 390);
$("#thead tr").eq(0).find("td").eq(5).attr("colspan", 6);
$("#thead tr").eq(0).find("td").eq(5).css("width", 390);
$("#table tr td").show();
// Merge(); for (var i = 0; i < NodeIs.length; i++) { for (var j = 0; j < $("#thead tr").length; j++) {
if (j == 0) { if (NodeIs[i] > 3 && NodeIs[i] <= 9) {
$("#thead tr").eq(0).find("td").eq(4).attr("colspan", $("#thead tr").eq(0).find("td").eq(4).attr("colspan") - 1);
$("#thead tr").eq(0).find("td").eq(4).css("width", parseInt($("#thead tr").eq(0).find("td").eq(4).css("width")) - 65);
} else {
$("#thead tr").eq(0).find("td").eq(5).attr("colspan", $("#thead tr").eq(0).find("td").eq(5).attr("colspan") - 1);
$("#thead tr").eq(0).find("td").eq(5).css("width", parseInt($("#thead tr").eq(0).find("td").eq(5).css("width")) - 65);
} if ($("#thead tr").eq(0).find("td").eq(4).attr("colspan") == 0) {
$("#thead tr").eq(0).find("td").eq(4).hide();
}
if ($("#thead tr").eq(0).find("td").eq(5).attr("colspan") == 0) {
$("#thead tr").eq(0).find("td").eq(5).hide();
} } else if (j == 1) {
$("#thead tr").eq(j).find("td").eq(NodeIs[i] - 4).hide();
} else {
$("#thead tr").eq(j).find("td").eq(NodeIs[i] - 2).hide();
} }
for (var j = 0; j < $("#tbody tr").length; j++) {
$("#tbody tr").eq(j).find("td").eq(NodeIs[i]).hide();
}
}
}
隐藏表格的方法
tree绑定
$(function () {
$.fn.zTree.init($("#TreeHead"), Theadsetting, zNodes);
});
表格 数据绑定
var json = []; //异地数据
$.post("GetData.aspx", { name: "CHJ" }, function (data) { json = $.parseJSON(data); ///填充数据
var str = ""; for (var i = 0; i < json.length; i++) {
var tr = "<tr><td style='width:40px'>" + i + "</td>";
for (var j = 0; j < json[i].length; j++) {
tr += "<td>" + json[i][j] + "</td>";
}
tr += "</tr>";
str += tr;
}
$("#tbody").append(str); Merge();
Bgcolcor(); //tr点击变色
for (var i = 0; i <= $("#tbody tr").length; i++) { var tr = $("#tbody tr").eq(i);
tr.click(function () {
$("#tbody tr").removeClass("click");
Bgcolcor();
$(this).removeClass("trtwobgcolor");
$(this).addClass("click");
})
} //比对变红
for (var i = 0; i < $("#tbody tr").length; i++) { var textone = $("#tbody tr").eq(i).find("td").eq(5).text();
var texttwo = $("#tbody tr").eq(i).find("td").eq(6).text();
if (parseFloat(textone) < parseFloat(texttwo)) {
var textone = $("#tbody tr").eq(i).find("td").eq(5).html("<b style='color:red;'>" + textone + "</b>");
}
} });
post方法读取数据
自动合并某列,可以自定义参数,范例如下
function Merge() {
var Initialvalue = 1;
var InitBool = false;
for (var i = 1; i <= $("#tbody tr").length; i++) { var one = $.trim($("#tbody tr").eq(i - 1).find("td").eq(1).text());
var two = $.trim($("#tbody tr").eq(i).find("td").eq(1).text());
if (one == two) {
Initialvalue++;
InitBool = false; $("#tbody tr").eq(i).find("td").eq(1).hide(); } else {
InitBool = true; }
if (i == $("#tbody tr").length) {
InitBool = true; }
if (InitBool) {
$("#tbody tr").eq(i - Initialvalue).find("td").eq(1).attr("rowspan", Initialvalue);
Initialvalue = 1;
} }
}
合并表格某列
单击某行变色
function Bgcolcor() {
//单双行变色
var SingleTr = 0;
for (var i = 0; i < $("#tbody tr").length; i++) { var tr = $("#tbody tr").eq(i);
var rowspan = 0;
for (var j = 0; j < tr.find("td").length; j++) {
if (tr.find("td").eq(j).attr("rowspan") != undefined) {
if (parseInt(tr.find("td").eq(j).attr("rowspan")) > rowspan) {
rowspan = parseInt(tr.find("td").eq(j).attr("rowspan"));
}
}
} for (var m = 0; m <= rowspan; m++) {
if (SingleTr % 2 != 0) { $("#tbody tr").eq(i + m).addClass("trtwobgcolor");
}
} for (var tempi = 1; tempi < rowspan; tempi++) {
i++;
} SingleTr++;
}
}
单击某行变色
jquery插入复杂表格,合并行列的更多相关文章
- jquery操作表格 合并单元格
jquery操作table,合并单元格,合并相同的行 合并的方法 $("#tableid").mergeCell({ cols:[X,X] ///参数为要合并的列}) /** * ...
- Markdown中插入复杂的合并表格方法
由于Markdown自身的语法限制,不能直接插入有合并单元格的复杂表格. 姓名 学号 专业 张三 2018123456 计算机 赵四 2018222356 自动化 李六 2018666666 信息工程 ...
- [jQuery编程挑战]007 切换数据表格的行列
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8&quo ...
- jquery 动态添加表格行
jquery 动态添加表格行 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <h ...
- QTableWidget表格合并若干问题及解决方法
Qt提供 QTableWidget作为表格的类以实现表格的基本功能,表格中所装载的每一个单元格由类QTableWidgetItem提供.这是基于表格实现 Qt提供的一个基础类,若想实现定制表格和单元格 ...
- 第84天:jQuery动态创建表格
jQuery动态创建表格 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- jQuery常用方法一览及JQuery选择器获取表格中按钮所在行的其他列值
Attribute: $(”p”).addClass(css中定义的样式类型); 给某个元素添加样式$(”img”).attr({src:”test.jpg”,alt:”test Image”}); ...
- jquery隐藏table表格的某一列
jquery隐藏table表格的某一列: $('table tr').find('td:eq(13)').hide(); 隐藏table的第13列
- jQuery动态对表格Table进行添加或删除行以及修改列值操作
jQuery,不仅可以以少量的代码做很多操作,而且兼容性好(各种浏览器,各种版本). 下面用jQuery动态对表格Table进行添加或删除行以及修改列值操作 1.jQuery代码 <script ...
随机推荐
- (转)Redis 的 5 个常见使用场景
在这篇文章中,我们将阐述 Redis 最常用的使用场景,以及那些影响我们选择的不同特性. 1.会话缓存(Session Cache) 最常用的一种使用Redis的情景是会话缓存(session cac ...
- response生成图片验证码
新建一个java web工程 src 目录下xieyuan包MyServlet.java文件(Servlet文件) package xieyuan; import java.awt.Color; im ...
- 技术杂记-改造具有监控功能的数据库连接池阿里Druid,支持simple-jndi,kettle
kettle内置的jndi管理是simple-jndi,功能确实比较简单,我需要监控kettle性能,druid确实是很不错的选择,但没有提供对应的支持,我改进了druid源码,实现了simple-j ...
- 使用Docker搭建Java Web运行环境
这周末体验了一下挺火的Docker技术,记录学习笔记. >Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发 ...
- 剑指Offer-【面试题03:二维数组中的查找】
package com.cxz.question3; /* * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. * 请完成一个函数,输入这样的一个二维数组和 ...
- Python 学习拾遗
该博文主要适应于python2.7,并没有对py3进行测试. 主要记录学习python过程中容易出现的一些小问题.小错误,相信能给你启发. 1.剔除一个字符串中的所有空格(假设该字符串是s) &quo ...
- Lua源码编译之CL编译器编译
通过使用VC下的CL编译器,可方便地编译Lua源码,而无需构造工程并设置各种选项: 以下以源码Lua5.3.1版本为例,将通过CL编译选项直接编译源码,为方便编译将采用批处理脚本,脚本放置在Lua解压 ...
- python的Template
Template模块,可以用来制作web页面的模板,非常的方便. Template属于string中的一个类,所以要使用的话要在头部引入: from string import Template 模板 ...
- Winform窗体最大化的时候,如何指定窗体的位置、大小
一.重写窗体的SizeChanged事件不能改变窗体最大化的位置和大小. public partial class Form2 : Form { public Form2() { Initialize ...
- HTTPS和HTTP的区别(转)
HTTPS和HTTP的区别 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信 息.HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器 ...