.Net用字符串拼接实现表格数据相同时合并单元格
前言
最近在做项目通过GridView或Repeater绑定数据,如果两行或若干行某列值相同,需要进行合并单元格,但是实现过程中想到了字符串拼接,于是就没用绑定数据控件,而是用了html结合字符串实现了绑定数据源并满足以上要求合并单元格。
前台代码如下
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%--<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table border="1">
<tr>
<td>
序号
</td>
<td>
内容1
</td>
<td>
内容2
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
</ItemTemplate>
<FooterTemplate>
</table></FooterTemplate>
</asp:Repeater>--%>
<table border="1">
<tr>
<td>
序号
</td>
<td>
内容1
</td>
<td>
内容2
</td>
</tr>
<%=strTRs %>
</table>
</div>
</form>
</body>
</html>
后台代码
public string strTRs = "";
protected void Page_Load(object sender, EventArgs e)
{
//拼接表格
//这里将要合并的数据 列 id1 进行排序,相同 列id1 数据行集中便于循环处理
DataTable dt = DbHelperSQL.GetDataTable("select * from Table_2 order by id1");
for (int i = ; i < dt.Rows.Count; )
{
int j = ; //记录每次 while循环累加合并的行数
//循环判断下一行记录的 id1列值是否相等,相等继续循环,不相等跳出
while (true)
{
if (i >= dt.Rows.Count) break;
if (dt.Rows.Count > i + ) //如果存在下一行记录,进入if
{
//如果下一行记录和当前行记录 id1列值相等,继续循环
if (dt.Rows[i]["id1"].ToString().Equals(dt.Rows[i + ]["id1"].ToString()))
{
i++;
j++;
continue;
}
else
{
//j大于1时存在要合并的行,合并处理
if (j > )
{
for (int k = ; k < j; k++)
{
if (k == )
{
strTRs += string.Format("<tr><td rowspan='{0}'>{1}</td><td>{2}</td><td>{3}</td></tr>", j, dt.Rows[i - j + k + ]["id1"].ToString(), dt.Rows[i - j + k + ]["test"].ToString(), dt.Rows[i - j + k + ]["id"].ToString());
}
else
{
strTRs += string.Format("<tr><td>{2}</td><td>{3}</td></tr>", j, dt.Rows[i - j + k + ]["id1"].ToString(), dt.Rows[i - j + k + ]["test"].ToString(), dt.Rows[i - j + k + ]["id"].ToString());
}
}
j = ;
i++;
}
else
{
strTRs += string.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>", dt.Rows[i]["id1"].ToString(), dt.Rows[i]["test"].ToString(), dt.Rows[i]["id"].ToString());
i++;
break;
}
}
}
else //不存在下一行记录,文本添加
{
strTRs += string.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>", dt.Rows[i]["id1"].ToString(), dt.Rows[i]["test"].ToString(), dt.Rows[i]["id"].ToString());
i++;
break;
} }
} }
.Net用字符串拼接实现表格数据相同时合并单元格的更多相关文章
- [原创]SQL表值函数:把用逗号分隔的字符串转换成表格数据
我们日常开发过程中,非常常见的一种需求,把某一个用逗号或者/或者其他符号作为间隔的字符串分隔成一张表数据. 在前面我们介绍了 [原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式,当然按照这 ...
- VUE-003-前端表格数据展示时,设置单元格(el-table-column)保留空格和换行
在使用 el-table 展示数据时,单元格中的数据有可能存在空格和换行符,若不进行设置,浏览器默认会取消空格和换行符,如下所示: 解决方法: 将单元格的样式 “white-space” 属性设置为“ ...
- layui:数据表格如何合并单元格
layui.use('table', function () { var table = layui.table; table.render({ elem: '#applyTab' , url: '$ ...
- 议:如何将树形菜单形式的数据转化成HTML的二维表(相同内容需合并单元格)
一般做OA类管理系统,经常涉及到“组织架构”的概念,那么像这种有上下层级关系的数据一般会做成树形菜单的方式显示,底层代码必定会用到递归算法.这篇随笔的目的就是要谈谈除了用树形菜单来显示这种上下层级关系 ...
- 【表格设置】HTML中合并单元格,对列组合应用样式,适应各浏览器的内容换行
1.常用表格标签 普通 <table> | <tr> | | <th ...
- php 数据导出到excel 2种带有合并单元格的导出
具体业务层面 可能会有所不同.以下两种方式涉及的合并单元格地方有所不同,不过基本思路是一致的. 第一种是非插件版本.可能更容易理解点,基本思路就是 组装table 然后 读取 输出到excel上.缺点 ...
- 前端Excel表格导入导出,包括合并单元格,表格自定义样式等
表格数据导入 读取导入Excel表格数据这里采用的是 xlsx 插件 npm i xlsx 读取excel需要通过 XLSX.read(data, {type: type}) 方法来实现,返回一个叫W ...
- jquery操作表格 合并单元格
jquery操作table,合并单元格,合并相同的行 合并的方法 $("#tableid").mergeCell({ cols:[X,X] ///参数为要合并的列}) /** * ...
- Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行
Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行 模版格式,图格式是最简单的格式,但实际效果不是这种,实际效果图如图2 图2 ,注意看红色部分,一对一是正常的,但是有一对多的订单 ...
随机推荐
- 学习笔记一:I2C协议学习和Verilog实现
////////////////////////////////////////////////// //clk = 20 MHz ,一个周期50ns //sck = 100 kHz (scl) ,一 ...
- 20155318 2016-2017-2 《Java程序设计》第七学习总结
20155318 2016-2017-2 <Java程序设计>第七学习总结 教材学习内容总结 学习目标 了解Lambda语法 了解方法引用 了解Fucntional与Stream API ...
- 可以运行的Oracle Advanced Queue的例子
通过查阅网上文章,发现很多Advanced Queue的例子无法跑起来. 参考了英文网站,可以正常运行成功. http://www.orafaq.com/wiki/Advanced_Queueing ...
- 8-[CSS]-选择器
1.选择器 首先来说一下,什么是选择器.在一个HTML页面中会有很多很多的元素,不同的元素可能会有不同的样式,某些元素又需要设置相同的样式,选择器就是用来从HTML页面中查找特定元素的,找到元素之后就 ...
- Python的requests、greenlet和gevent模块在windows下安装
一.requests模块在windows下安装 Linux系统下requests的安装方法在http://docs.python-requests.org/en/latest/user/install ...
- Mac os x 配置maven
安装Maven 1.压缩包apache-maven-3.3.9-bin.zip 2.解压压缩包到指定文件 3.打开终端,输入以下命令,编辑环境变量文件:bash_proflie open .bash_ ...
- 用UGUI制作可根据手指位置自动定位的隐形遥杆
之前写过遥杆怎么做,这里依然用的是之前的方法,就不介绍了. 之前玩过<蜡烛人>,发现手游版的<蜡烛人>的遥杆是看不见的,手指直接在屏幕左边滑动人物就可以移动,可能是为了增强沉浸 ...
- jar包冲突常用的解决方法
jar包冲突常见的异常为找不到类(java.lang.ClassNotFoundException).找不到具体方法(java.lang.NoSuchMethodError).字段错误( java.l ...
- SQL面经汇总
转载链接:https://www.nowcoder.com/discuss/95812 目前的打算是还要写一个假设检验的汇总和机器学习的汇总. 之前写的概率论汇总: https://www.nowco ...
- IE10不能显示JSON文件内容
IE7,8,9下Ajax返回后,再执行跳转,会弹出阻止提示框. 所以我采用WebForm 提交思想: //导出 jv.postOpen = jv.PostOpen = jv.Export = func ...