.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 ,注意看红色部分,一对一是正常的,但是有一对多的订单 ...
随机推荐
- linux ssh 连接设置
! 本文编辑中 centos ssh 无法连接
- 大数据入门第七天——MapReduce详解(二)切片源码浅析与自定义patition
一.mapTask并行度的决定机制 1.概述 一个job的map阶段并行度由客户端在提交job时决定 而客户端对map阶段并行度的规划的基本逻辑为: 将待处理数据执行逻辑切片(即按照一个特定切片大小, ...
- 20155226 2016-2017-2 《Java程序设计》第9周学习总结
20155226 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商 ...
- C#课后练手
猜拳(三局两胜)请输入您的手势:石头用户手势:石头 电脑手势:剪刀用户胜:1 电脑胜:0 请输入您的手势:石头用户手势:石头 电脑手势:石头用户胜:1 电脑胜: ...
- AJAX 过程总结
AJAX 工作过程:(1) 创建对象(需要处理兼容性问题) 创建XMLHttpRequest对象(创建一个异步调用对象) <!-- ie6以上 --> var xhr = new XMLH ...
- 快速上手IOT视觉化开发工具Node-RED
作者:何信昱 现在有越来越多非专业背景但有创造热诚的Maker,想要进入物联网领域大展身手,但常常苦于无法撰写艰深难懂的程序代码,以及想要连接各种硬件与时下最流行的社群软件,却不知道如何使用开放给开发 ...
- 大学生Linux常用命令(一)
大学生Linux常用命令(一) 1.1 命令格式 命令格式一般为---命令名 [选项] [参数1] [参数2]- 例如:cp -I file1 cp为命令名,-l为选项,file1为参数. 其中,命令 ...
- React——JSX
一.将表达式嵌套在JSX中 要在JSX中内嵌js表达式只需要将js表达式放在{}中,例如: const element = <h1>this is a JSX {sayName()}< ...
- css学习杂记
1.css中的&语法 &是sass的语法,代表上一级选择器. 例如: .el-row { margin-bottom: 20px; &:last-child { margin- ...
- Shader开发之烘焙Lightmap自发光
自己参考Build-in写了一套shader, 写完发现自发光部分在烘焙时不生效, 查阅资料发现需要在Material上设置为对应标记, 这部分功能可以像Standard Shader一样写在Shad ...