前言

最近在做项目通过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用字符串拼接实现表格数据相同时合并单元格的更多相关文章

  1. [原创]SQL表值函数:把用逗号分隔的字符串转换成表格数据

      我们日常开发过程中,非常常见的一种需求,把某一个用逗号或者/或者其他符号作为间隔的字符串分隔成一张表数据. 在前面我们介绍了 [原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式,当然按照这 ...

  2. VUE-003-前端表格数据展示时,设置单元格(el-table-column)保留空格和换行

    在使用 el-table 展示数据时,单元格中的数据有可能存在空格和换行符,若不进行设置,浏览器默认会取消空格和换行符,如下所示: 解决方法: 将单元格的样式 “white-space” 属性设置为“ ...

  3. layui:数据表格如何合并单元格

    layui.use('table', function () { var table = layui.table; table.render({ elem: '#applyTab' , url: '$ ...

  4. 议:如何将树形菜单形式的数据转化成HTML的二维表(相同内容需合并单元格)

    一般做OA类管理系统,经常涉及到“组织架构”的概念,那么像这种有上下层级关系的数据一般会做成树形菜单的方式显示,底层代码必定会用到递归算法.这篇随笔的目的就是要谈谈除了用树形菜单来显示这种上下层级关系 ...

  5. 【表格设置】HTML中合并单元格,对列组合应用样式,适应各浏览器的内容换行

    1.常用表格标签 普通    <table>           |           <tr>          |           |          <th ...

  6. php 数据导出到excel 2种带有合并单元格的导出

    具体业务层面 可能会有所不同.以下两种方式涉及的合并单元格地方有所不同,不过基本思路是一致的. 第一种是非插件版本.可能更容易理解点,基本思路就是 组装table 然后 读取 输出到excel上.缺点 ...

  7. 前端Excel表格导入导出,包括合并单元格,表格自定义样式等

    表格数据导入 读取导入Excel表格数据这里采用的是 xlsx 插件 npm i xlsx 读取excel需要通过 XLSX.read(data, {type: type}) 方法来实现,返回一个叫W ...

  8. jquery操作表格 合并单元格

    jquery操作table,合并单元格,合并相同的行 合并的方法 $("#tableid").mergeCell({ cols:[X,X] ///参数为要合并的列}) /** * ...

  9. Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行

    Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行 模版格式,图格式是最简单的格式,但实际效果不是这种,实际效果图如图2 图2 ,注意看红色部分,一对一是正常的,但是有一对多的订单 ...

随机推荐

  1. Java基础—集合

    一.概述 Java中的集合框架主要分为两大派别:Collection 和 Map —— 位于util包下 类的基础关系图如下(图片来自百度) 常用: List——有序可重复 Set——无序不可重复 M ...

  2. 仙人掌&圆方树

    仙人掌&圆方树 Tags:图论 [x] [luogu4320]道路相遇 https://www.luogu.org/problemnew/show/P4320 [ ] [SDOI2018]战略 ...

  3. 【转载】C++创建对象的两种方法

    原文:http://blog.sina.com.cn/s/blog_586b6c050100dhjg.html 在C++里,有两种方法创建对象: 方法一: ClassName object(param ...

  4. 15-[mysql内置功能]--函数,流程控制 (未完成)

    1.MySQL中提供了许多内置函数 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器 ...

  5. springmvc 解决@ResponseBody注解返回中文乱码

    使用messageConverters <bean class="org.springframework.web.servlet.mvc.method.annotation.Reque ...

  6. JAVAEE Eclipse 控制台用起来感觉很不方便的原因

    这是因为切换成了java面板的原因 因为之前有切换到过 java project 项目,所以才转到了这个面板,之后如果不手动改即便是用javaee也会是这个面板,因而用起来不方便 解决方法: 切换到j ...

  7. Win10家庭版无法打开策略组问题

    Win10家庭版无法打开策略组问题 • 复制以下代码至记事本中 @echo off pushd "%~dp0" *.mum >List.txt *.mum >>L ...

  8. 记录Centos7搭建ftp服务器以及遇到的各种坑

    前言 今天被经理要求搭建ftp服务器,然后就去网上搜索了一下教程.搭建成功后(遇到的坑不少)特此记录一下.因为是为了记录一下整个操作流程以防以后使用所以比较啰嗦. 目录 1.安装vsftpd 2.创建 ...

  9. Mysql优化之索引

    前言 这几天抽了个时间将<高性能Mysql>看了一下忽觉索引非常之重要,习之然后总结巩固知识.本文索引使用的是InnoDB存储引擎.因为本文并不是说用索引的好处,所以并不会书写QPS之类的 ...

  10. Revit开发小技巧-连接类

    该类用来连接两个Element.备注一下防止忘记.