【Javascript】Javascript横向/纵向合并单元格TD
> 需求是这样滴(>_<)
在报表系统中,涉及“HTML的TD单元格的合并”恐怕为数不少。
比如,从DB查得数据并经过后台的整理后,可能是这样的:
Table1
| JOB | TOTAL SAL | INDEX | EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ANALYST | 6000 | 1 | 7788 | SCOTT | ANALYST | 7566 | 4/19/1987 | 3000.00 | 20 | |
| 1 | ANALYST | 6000 | 2 | 7902 | FORD | ANALYST | 7566 | 12/3/1981 | 3000.00 | 20 | |
| 2 | CLERK | 4150 | 3 | 7934 | MILLER | CLERK | 7782 | 1/23/1982 | 1300.00 | 10 | |
| 2 | CLERK | 4150 | 4 | 7900 | JAMES | CLERK | 7698 | 12/3/1981 | 950.00 | 30 | |
| 2 | CLERK | 4150 | 5 | 7369 | SMITH | CLERK | 7902 | 12/17/1980 | 800.00 | 20 | |
| 2 | CLERK | 4150 | 6 | 7876 | ADAMS | CLERK | 7788 | 5/23/1987 | 1100.00 | 20 | |
| 3 | MANAGER | 8275 | 7 | 7698 | BLAKE | MANAGER | 7839 | 5/1/1981 | 2850.00 | 30 | |
| 3 | MANAGER | 8275 | 8 | 7566 | JONES | MANAGER | 7839 | 4/2/1981 | 2975.00 | 20 | |
| 3 | MANAGER | 8275 | 9 | 7782 | CLARK | MANAGER | 7839 | 6/9/1981 | 2450.00 | 10 | |
| 4 | PRESIDENT | 5000 | 10 | 7839 | KING | PRESIDENT | 11/17/1981 | 5000.00 | 10 | ||
| 5 | SALESMAN | 5600 | 11 | 7844 | TURNER | SALESMAN | 7698 | 9/8/1981 | 1500.00 | 0.00 | 30 |
| 5 | SALESMAN | 5600 | 12 | 7654 | MARTIN | SALESMAN | 7698 | 9/28/1981 | 1250.00 | 1400.00 | 30 |
| 5 | SALESMAN | 5600 | 13 | 7521 | WARD | SALESMAN | 7698 | 2/22/1981 | 1250.00 | 500.00 | 30 |
| 5 | SALESMAN | 5600 | 14 | 7499 | ALLEN | SALESMAN | 7698 | 2/20/1981 | 1600.00 | 300.00 | 30 |
为了让用户更清晰地查看报表,结果可能需要是这样的(各职位的薪水总额及分布明细):
Table2
| JOB | TOTAL SAL | INDEX | EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ANALYST | 6000 | 1 | 7788 | SCOTT | ANALYST | 7566 | 4/19/1987 | 3000.00 | 20 | |
| 2 | 7902 | FORD | ANALYST | 7566 | 12/3/1981 | 3000.00 | 20 | ||||
| 2 | CLERK | 4150 | 3 | 7934 | MILLER | CLERK | 7782 | 1/23/1982 | 1300.00 | 10 | |
| 4 | 7900 | JAMES | CLERK | 7698 | 12/3/1981 | 950.00 | 30 | ||||
| 5 | 7369 | SMITH | CLERK | 7902 | 12/17/1980 | 800.00 | 20 | ||||
| 6 | 7876 | ADAMS | CLERK | 7788 | 5/23/1987 | 1100.00 | 20 | ||||
| 3 | MANAGER | 8275 | 7 | 7698 | BLAKE | MANAGER | 7839 | 5/1/1981 | 2850.00 | 30 | |
| 8 | 7566 | JONES | MANAGER | 7839 | 4/2/1981 | 2975.00 | 20 | ||||
| 9 | 7782 | CLARK | MANAGER | 7839 | 6/9/1981 | 2450.00 | 10 | ||||
| 4 | PRESIDENT | 5000 | 10 | 7839 | KING | PRESIDENT | 11/17/1981 | 5000.00 | 10 | ||
| 5 | SALESMAN | 5600 | 11 | 7844 | TURNER | SALESMAN | 7698 | 9/8/1981 | 1500.00 | 0.00 | 30 |
| 12 | 7654 | MARTIN | SALESMAN | 7698 | 9/28/1981 | 1250.00 | 1400.00 | 30 | |||
| 13 | 7521 | WARD | SALESMAN | 7698 | 2/22/1981 | 1250.00 | 500.00 | 30 | |||
| 14 | 7499 | ALLEN | SALESMAN | 7698 | 2/20/1981 | 1600.00 | 300.00 | 30 |
这就需要我们对单元格进行相应的合并。
一般来说,有两种处理方法,
- 在编写HTML时已设置单元格的合并;
- 在编写HTML时未作合并处理,后期由Javascript完成单元格合并工作。
本文讲的是第2种情况。
合并单元格的步骤
比如,我要把上表Table1中数值为ANALYST的两个单元格合并。
| JOB |
| ANALYST |
| ANALYST |
- 我们首先需要将第二个ANALYST的单元格删除掉
- 然后设置第一个ANALYST的单元格的rowSpan属性为2(表示“跨越2行”)
> 写得不好的公用方法
之前写了一个公用Javascript方法,用以合并相邻间文本相同的单元格。
这个方法写得不好,有明显的Bug。对已做过合并的Table,这个方法有可能导致合并单元格错误。
主要的原因在于,对于合并过单元格的表格,那么被合并的行就会相应的少一个TD,而此方法依旧按未合并过单元格的情况来获取TD对象。
比如,获取第二列的所有单元格,此程序用“获取全部TR中的第二个TD”来实现,这在未合并过单元格的Table是正确的,但对于合并过单元格的Table,则未必,因为被合并的行相应地少一个单元格。
此处将代码贴出,希望大家引以为鉴。
function mergeCell(tableObj, col) {
var $tab = $(tableObj);
var $trs = $tab.find("tr");
var oldval;
var firstTD;
var counter = 0;
$trs.each(function(index) {
if (!oldval && !firstTD) {
oldval = $(this).find("td:eq(" + col + ")").text();
firstTD = $(this).find("td:eq(" + col + ")").get(0);
counter = 0;
counter++;
} else {
if ($(this).find("td:eq(" + col + ")").text() == oldval) {
$(this).find("td:eq(" + col + ")").remove();
counter++;
} else {
$(firstTD).attr("rowSpan", counter);
oldval = $(this).find("td:eq(" + col + ")").text();
firstTD = $(this).find("td:eq(" + col + ")").get(0);
counter = 0;
counter++;
}
}
if (index >= $trs.length - 1) {
$(firstTD).attr("rowSpan", counter);
}
});
}
mergeCell
页面DEMO如下(HTML代码,较长):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head> <script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/tdmerger.js"></script>
<script type="text/javascript">
$().ready(function() { mergeCell($("#list_table").get(0), 1);
mergeCell($("#list_table").get(0), 2); }); function mergeCell(tableObj, col) {
var $tab = $(tableObj);
var $trs = $tab.find("tr"); var oldval;
var firstTD;
var counter = 0;
$trs.each(function(index) { if (!oldval && !firstTD) {
oldval = $(this).find("td:eq(" + col + ")").text();
firstTD = $(this).find("td:eq(" + col + ")").get(0);
counter = 0;
counter++;
} else {
if ($(this).find("td:eq(" + col + ")").text() == oldval) {
$(this).find("td:eq(" + col + ")").remove();
counter++;
} else {
$(firstTD).attr("rowSpan", counter);
oldval = $(this).find("td:eq(" + col + ")").text();
firstTD = $(this).find("td:eq(" + col + ")").get(0);
counter = 0;
counter++;
}
} if (index >= $trs.length - 1) {
$(firstTD).attr("rowSpan", counter);
} });
} </script> <body> <TABLE id="list_table" BORDER="1">
<TR> <TH> </TH>
<TH>JOB</TH>
<TH>TOTAL SAL</TH> <TH>INDEX</TH>
<TH>EMPNO</TH>
<TH>ENAME</TH>
<TH>JOB</TH>
<TH>MGR</TH>
<TH>HIREDATE</TH>
<TH>SAL</TH>
<TH>COMM</TH>
<TH>DEPTNO</TH>
</TR>
<TR>
<TD>1</TD>
<TD>ANALYST</TD>
<TD>6000</TD>
<TD>1</TD>
<TD>7788</TD>
<TD>SCOTT</TD>
<TD>ANALYST</TD>
<TD>7566</TD>
<TD>4/19/1987</TD>
<TD>3000.00</TD>
<TD> </TD>
<TD>20</TD>
</TR>
<TR>
<TD>1</TD>
<TD>ANALYST</TD>
<TD>6000</TD>
<TD>2</TD>
<TD>7902</TD>
<TD>FORD</TD>
<TD>ANALYST</TD>
<TD>7566</TD>
<TD>12/3/1981</TD>
<TD>3000.00</TD>
<TD> </TD>
<TD>20</TD>
</TR>
<TR>
<TD>2</TD>
<TD>CLERK</TD>
<TD>4150</TD>
<TD>3</TD>
<TD>7934</TD>
<TD>MILLER</TD>
<TD>CLERK</TD>
<TD>7782</TD>
<TD>1/23/1982</TD>
<TD>1300.00</TD>
<TD> </TD>
<TD>10</TD>
</TR>
<TR>
<TD>2</TD>
<TD>CLERK</TD>
<TD>4150</TD>
<TD>4</TD>
<TD>7900</TD>
<TD>JAMES</TD>
<TD>CLERK</TD>
<TD>7698</TD>
<TD>12/3/1981</TD>
<TD>950.00</TD>
<TD> </TD>
<TD>30</TD>
</TR>
<TR>
<TD>2</TD>
<TD>CLERK</TD>
<TD>4150</TD>
<TD>5</TD>
<TD>7369</TD>
<TD>SMITH</TD>
<TD>CLERK</TD>
<TD>7902</TD>
<TD>12/17/1980</TD>
<TD>800.00</TD>
<TD> </TD>
<TD>20</TD>
</TR>
<TR>
<TD>2</TD>
<TD>CLERK</TD>
<TD>4150</TD>
<TD>6</TD>
<TD>7876</TD>
<TD>ADAMS</TD>
<TD>CLERK</TD>
<TD>7788</TD>
<TD>5/23/1987</TD>
<TD>1100.00</TD>
<TD> </TD>
<TD>20</TD>
</TR>
<TR>
<TD>3</TD>
<TD>MANAGER</TD>
<TD>8275</TD>
<TD>7</TD>
<TD>7698</TD>
<TD>BLAKE</TD>
<TD>MANAGER</TD>
<TD>7839</TD>
<TD>5/1/1981</TD>
<TD>2850.00</TD>
<TD> </TD>
<TD>30</TD>
</TR>
<TR>
<TD>3</TD>
<TD>MANAGER</TD>
<TD>8275</TD>
<TD>8</TD>
<TD>7566</TD>
<TD>JONES</TD>
<TD>MANAGER</TD>
<TD>7839</TD>
<TD>4/2/1981</TD>
<TD>2975.00</TD>
<TD> </TD>
<TD>20</TD>
</TR>
<TR>
<TD>3</TD>
<TD>MANAGER</TD>
<TD>8275</TD>
<TD>9</TD>
<TD>7782</TD>
<TD>CLARK</TD>
<TD>MANAGER</TD>
<TD>7839</TD>
<TD>6/9/1981</TD>
<TD>2450.00</TD>
<TD> </TD>
<TD>10</TD>
</TR>
<TR>
<TD>4</TD>
<TD>PRESIDENT</TD>
<TD>5000</TD>
<TD>10</TD>
<TD>7839</TD>
<TD>KING</TD>
<TD>PRESIDENT</TD>
<TD> </TD>
<TD>11/17/1981</TD>
<TD>5000.00</TD>
<TD> </TD>
<TD>10</TD>
</TR>
<TR>
<TD>4</TD>
<TD>SUPER PRESIDENT</TD>
<TD>5000</TD>
<TD>10</TD>
<TD>7839</TD>
<TD>KING</TD>
<TD>PRESIDENT</TD>
<TD> </TD>
<TD>11/17/1981</TD>
<TD>5000.00</TD>
<TD> </TD>
<TD>10</TD>
</TR>
<TR>
<TD>5</TD>
<TD>SALESMAN</TD>
<TD>5600</TD>
<TD>11</TD>
<TD>7844</TD>
<TD>TURNER</TD>
<TD>SALESMAN</TD>
<TD>7698</TD>
<TD>9/8/1981</TD>
<TD>1500.00</TD>
<TD>0.00</TD>
<TD>30</TD>
</TR>
<TR>
<TD>5</TD>
<TD>SALESMAN</TD>
<TD>5600</TD>
<TD>12</TD>
<TD>7654</TD>
<TD>MARTIN</TD>
<TD>SALESMAN</TD>
<TD>7698</TD>
<TD>9/28/1981</TD>
<TD>1250.00</TD>
<TD>1400.00</TD>
<TD>30</TD>
</TR>
<TR>
<TD>5</TD>
<TD>SALESMAN</TD>
<TD>5600</TD>
<TD>13</TD>
<TD>7521</TD>
<TD>WARD</TD>
<TD>SALESMAN</TD>
<TD>7698</TD>
<TD>2/22/1981</TD>
<TD>1250.00</TD>
<TD>500.00</TD>
<TD>30</TD>
</TR>
<TR>
<TD>5</TD>
<TD>SALESMAN</TD>
<TD>5600</TD>
<TD>14</TD>
<TD>7499</TD>
<TD>ALLEN</TD>
<TD>SALESMAN</TD>
<TD>7698</TD>
<TD>2/20/1981</TD>
<TD>1600.00</TD>
<TD>300.00</TD>
<TD>30</TD>
</TR>
</TABLE> </body>
</html>
WrongMergeTD.html
> 写得不好怎么办?卷土重来呗
于是,重新写了两个公用方法来合并单元格。
一个是合并相邻值相同的单元格;
另外一个是合并指定序号的单元格,比如2-5,6-8,是“合并第2个至第5个单元格、第6个和至第8个单元格”。
这俩方法将“获取需要合并的TD元素”的动作交由方法调用者,只负责对入参单元格作对应的合并。
JS
/**
* Meger cells with same text
* @param $tds TDs jquery object
* @param type row/col
*/
function mergeCell4SameText($tds, type) { var oldval;
var firstTD;
var counter = 0;
$tds.each(function(index) { if (index == 0) {
oldval = $(this).text();
firstTD = $(this).get(0);
counter = 0;
counter++;
} else {
if ($(this).text() == oldval) {
$(this).remove();
counter++;
} else {
if (type == 'col') {
$(firstTD).attr("rowSpan", counter);
} else if (type == 'row') {
$(firstTD).attr("colSpan", counter);
} oldval = $(this).text();
firstTD = $(this).get(0);
counter = 0;
counter++;
}
} if (index >= $tds.length - 1) { if (type == 'col') {
$(firstTD).attr("rowSpan", counter);
} else if (type == 'row') {
$(firstTD).attr("colSpan", counter);
} } });
} /**
* Meger cells by the parameters "index"
* @param $tds TDs jquery object
* @param type row/col
* @param index for example, 0-1,2-5,6-8,10-13
*/
function mergeCellByIndex($tds, type, index) { var indexArrs = index.split(','); var fromTo;
var from;
var to; for (var i in indexArrs) {
fromTo = indexArrs[i]; from = new Number(fromTo.split('-')[0]);
to = new Number(fromTo.split('-')[1]); for (var j = 1 + from; j <= to; j++) {
$($tds.get(j)).remove();
} if (type == 'col') {
$($tds.get(from)).attr("rowSpan", to - from + 1);
} else if (type == 'row') {
$($tds.get(from)).attr("colSpan", to - from + 1);
} } }
tdmerger
调用的页面(HTML代码,较长):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head> <script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/tdmerger.js"></script>
<script type="text/javascript">
$().ready(function() { $col1tds = $("table tr td:nth-child(1)");
$col2tds = $("table tr td:nth-child(2)");
$col3tds = $("table tr td:nth-child(3)"); mergeCellByIndex($col1tds, 'col', '0-1,2-5,6-8,10-13');
mergeCellByIndex($col2tds, 'col', '0-1,2-5,6-8,10-13');
mergeCellByIndex($col3tds, 'col', '0-1,2-5,6-8,10-13'); /*
$row2tds = $("table tr:eq(2) td");
mergeCellByIndex($row2tds, 'row', '6-11');
*/ }); </script> <body> <TABLE BORDER="1">
<TR> <TH> </TH>
<TH>JOB</TH>
<TH>TOTAL SAL</TH> <TH>INDEX</TH>
<TH>EMPNO</TH>
<TH>ENAME</TH>
<TH>JOB</TH>
<TH>MGR</TH>
<TH>HIREDATE</TH>
<TH>SAL</TH>
<TH>COMM</TH>
<TH>DEPTNO</TH>
</TR>
<TR>
<TD>1</TD>
<TD>ANALYST</TD>
<TD>6000</TD>
<TD>1</TD>
<TD>7788</TD>
<TD>SCOTT</TD>
<TD>ANALYST</TD>
<TD>7566</TD>
<TD>4/19/1987</TD>
<TD>3000.00</TD>
<TD> </TD>
<TD>20</TD>
</TR>
<TR>
<TD>1</TD>
<TD>ANALYST</TD>
<TD>6000</TD>
<TD>2</TD>
<TD>7902</TD>
<TD>FORD</TD>
<TD>ANALYST</TD>
<TD>7566</TD>
<TD>12/3/1981</TD>
<TD>3000.00</TD>
<TD> </TD>
<TD>20</TD>
</TR>
<TR>
<TD>2</TD>
<TD>CLERK</TD>
<TD>4150</TD>
<TD>3</TD>
<TD>7934</TD>
<TD>MILLER</TD>
<TD>CLERK</TD>
<TD>7782</TD>
<TD>1/23/1982</TD>
<TD>1300.00</TD>
<TD> </TD>
<TD>10</TD>
</TR>
<TR>
<TD>2</TD>
<TD>CLERK</TD>
<TD>4150</TD>
<TD>4</TD>
<TD>7900</TD>
<TD>JAMES</TD>
<TD>CLERK</TD>
<TD>7698</TD>
<TD>12/3/1981</TD>
<TD>950.00</TD>
<TD> </TD>
<TD>30</TD>
</TR>
<TR>
<TD>2</TD>
<TD>CLERK</TD>
<TD>4150</TD>
<TD>5</TD>
<TD>7369</TD>
<TD>SMITH</TD>
<TD>CLERK</TD>
<TD>7902</TD>
<TD>12/17/1980</TD>
<TD>800.00</TD>
<TD> </TD>
<TD>20</TD>
</TR>
<TR>
<TD>2</TD>
<TD>CLERK</TD>
<TD>4150</TD>
<TD>6</TD>
<TD>7876</TD>
<TD>ADAMS</TD>
<TD>CLERK</TD>
<TD>7788</TD>
<TD>5/23/1987</TD>
<TD>1100.00</TD>
<TD> </TD>
<TD>20</TD>
</TR>
<TR>
<TD>3</TD>
<TD>MANAGER</TD>
<TD>8275</TD>
<TD>7</TD>
<TD>7698</TD>
<TD>BLAKE</TD>
<TD>MANAGER</TD>
<TD>7839</TD>
<TD>5/1/1981</TD>
<TD>2850.00</TD>
<TD> </TD>
<TD>30</TD>
</TR>
<TR>
<TD>3</TD>
<TD>MANAGER</TD>
<TD>8275</TD>
<TD>8</TD>
<TD>7566</TD>
<TD>JONES</TD>
<TD>MANAGER</TD>
<TD>7839</TD>
<TD>4/2/1981</TD>
<TD>2975.00</TD>
<TD> </TD>
<TD>20</TD>
</TR>
<TR>
<TD>3</TD>
<TD>MANAGER</TD>
<TD>8275</TD>
<TD>9</TD>
<TD>7782</TD>
<TD>CLARK</TD>
<TD>MANAGER</TD>
<TD>7839</TD>
<TD>6/9/1981</TD>
<TD>2450.00</TD>
<TD> </TD>
<TD>10</TD>
</TR>
<TR>
<TD>4</TD>
<TD>PRESIDENT</TD>
<TD>5000</TD>
<TD>10</TD>
<TD>7839</TD>
<TD>KING</TD>
<TD>PRESIDENT</TD>
<TD> </TD>
<TD>11/17/1981</TD>
<TD>5000.00</TD>
<TD> </TD>
<TD>10</TD>
</TR>
<TR>
<TD>5</TD>
<TD>SALESMAN</TD>
<TD>5600</TD>
<TD>11</TD>
<TD>7844</TD>
<TD>TURNER</TD>
<TD>SALESMAN</TD>
<TD>7698</TD>
<TD>9/8/1981</TD>
<TD>1500.00</TD>
<TD>0.00</TD>
<TD>30</TD>
</TR>
<TR>
<TD>5</TD>
<TD>SALESMAN</TD>
<TD>5600</TD>
<TD>12</TD>
<TD>7654</TD>
<TD>MARTIN</TD>
<TD>SALESMAN</TD>
<TD>7698</TD>
<TD>9/28/1981</TD>
<TD>1250.00</TD>
<TD>1400.00</TD>
<TD>30</TD>
</TR>
<TR>
<TD>5</TD>
<TD>SALESMAN</TD>
<TD>5600</TD>
<TD>13</TD>
<TD>7521</TD>
<TD>WARD</TD>
<TD>SALESMAN</TD>
<TD>7698</TD>
<TD>2/22/1981</TD>
<TD>1250.00</TD>
<TD>500.00</TD>
<TD>30</TD>
</TR>
<TR>
<TD>5</TD>
<TD>SALESMAN</TD>
<TD>5600</TD>
<TD>14</TD>
<TD>7499</TD>
<TD>ALLEN</TD>
<TD>SALESMAN</TD>
<TD>7698</TD>
<TD>2/20/1981</TD>
<TD>1600.00</TD>
<TD>300.00</TD>
<TD>30</TD>
</TR>
</TABLE> </body>
</html>
mergeTD
对于合并单元格,这两种方式都不太满意,可是,也想不到更好的方法对此操作作封装。
如果童靴有更好的方法,请指点!!
【Javascript】Javascript横向/纵向合并单元格TD的更多相关文章
- dev GridControl直接打印 纵向合并单元格
GridControl纵向合并单元格 只需设置 gridView->OptionView->AllowCellMerge=true; 效果 提示: 精确到列 前提是gridview1已经允 ...
- RDLC报表纵向合并单元格。
在做RDLC报表时发现居然没有纵向合并单元格,震惊! 网上查了一些资料,有些方法很可爱,采用去除边框法,但是用这种方法如果要求文本属性居中的话那则达不到美观效果,还有些复杂一点的方法,我都没耐心看,然 ...
- dev gridcontrol纵向合并单元格设置
1.要设置gridcontrol中指定列(columns中选中指定列)的AllowMerge属性为true; 2.要设置gridview中AllowCellMerge的属性为true; 3.如果只合并 ...
- 【Web】jquery合并单元格
合并单元格的情况,在开发中还是比较多见的,以下仅介绍合并行的情况. 原来的table效果 效果如下: 代码如下: <!DOCTYPE html> <html xmlns=" ...
- 让我头疼一下午的Excel合并单元格
Excel导出常见问题 excel导出其实不算什么难事 在网上copy下模板代码,填充自己的业务数据,提供一个http接口基本就可以得到你要导出的数据了. 但是,凡事都有例外,截止今天,excel导出 ...
- 固定表头,单元格td宽度自适应,多内容出现-横向纵向滚动条数据表格的<前世今生>
固定表头,单元格td宽度自适应,多内容出现-横向纵向滚动条数据表格的<前世今生> 先上图例 & 无论多少数据--都完美! 背景:由于我司行业方向,需要很多数据报表,则t ...
- datagridview 纵向 横向 合并单元格
datagridview 单元格合并:纵向以及横向合并参考了csdn上不知哪位的代码,具体哪位找不到连接了. 纵向合并: /// <summary> /// 纵向合并,即合并数据项的值 / ...
- 【表格设置】HTML中合并单元格,对列组合应用样式,适应各浏览器的内容换行
1.常用表格标签 普通 <table> | <tr> | | <th ...
- jquery操作表格 合并单元格
jquery操作table,合并单元格,合并相同的行 合并的方法 $("#tableid").mergeCell({ cols:[X,X] ///参数为要合并的列}) /** * ...
随机推荐
- mac 安装升级python3
如果没有安装过python3的话那就直接下载dmg文件安装升级,一般下载安装后的路径为 /Library/Frameworks/Python.framework/Versions 如果同时安装了多个p ...
- Linux rpm 命令参数使用详解[介绍和应用]
RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种 ...
- MySQL工具1:mysqladmin
每两秒显示一下MySQL的状态,一共显示5次. # mysqladmin -uroot -p -i 2 -c 5 status 查看MySQL的运行状态: #mysqladmin -uroot -p ...
- PHP 循环
PHP 中的循环语句用于执行相同的代码块指定的次数. 循环 在您编写代码时,您经常需要让相同的代码块运行很多次.您可以在代码中使用循环语句来完成这个任务. 在 PHP 中,我们可以使用下列循环语句: ...
- 全局安装 vue
通过npm命令安装vuejs在用 Vue.js 构建大型应用时推荐使用 NPM 安装,NPM 能很好地和诸如 Webpack 或Browserify 的 CommonJS 模块打包器配合使用.(以下操 ...
- SQL 2008 R2数据库变为REPLICATION,日志不断增长并且不能截断和收缩的解决方式
执行环境:windows server2003,sql server2008 R2,数据库上布置CDC 用户反应系统报错是日志已满,系统不能执行. 查看日志文件时.发现日志文件已经达到15G ...
- Java之异常机制(1) - 高效处理异常
Java开发人员做出的有关架构的最重要的决定之一便是如何使用Java异常模型.Java异常处理成为社区中讨论最多的话题之一.一些人认为Java语 言中的已检查异常(Checked Exceptions ...
- 〖Android〗OK6410a的Android HAL层代码编写笔记
一.编写LED灯的Linux驱动程序代码 之所以使用存在HAL层,是为了保护对硬件驱动过程的逻辑与原理: 所以,残留在Linux驱动层的代码,只保留了基本的读写操作,而不含有关键的逻辑思维: 1. l ...
- 指定spring中bean启动的顺序
参考链接: https://www.jb51.net/article/125846.htm 使用DependsOn Spring 中的 DependsOn 注解可以保证被依赖的bean先于当前bean ...
- spring aop的两种写法aspect和advisor
本文转自:https://www.cnblogs.com/leiOOlei/p/3709607.html 首先看个例子,如下 接口代码: package com.lei.demo.aop.schema ...