.Net用字符串拼接实现表格数据相同时合并单元格
2015-09-02 14:59
471 查看
前言
最近在做项目通过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 = 0; i < dt.Rows.Count; ) { int j = 1; //记录每次 while循环累加合并的行数 //循环判断下一行记录的 id1列值是否相等,相等继续循环,不相等跳出 while (true) { if (i >= dt.Rows.Count) break; if (dt.Rows.Count > i + 1) //如果存在下一行记录,进入if { //如果下一行记录和当前行记录 id1列值相等,继续循环 if (dt.Rows[i]["id1"].ToString().Equals(dt.Rows[i + 1]["id1"].ToString())) { i++; j++; continue; } else { //j大于1时存在要合并的行,合并处理 if (j > 1) { for (int k = 0; k < j; k++) { if (k == 0) { strTRs += string.Format("<tr><td rowspan='{0}'>{1}</td><td>{2}</td><td>{3}</td></tr>", j, dt.Rows[i - j + k + 1]["id1"].ToString(), dt.Rows[i - j + k + 1]["test"].ToString(), dt.Rows[i - j + k + 1]["id"].ToString()); } else { strTRs += string.Format("<tr><td>{2}</td><td>{3}</td></tr>", j, dt.Rows[i - j + k + 1]["id1"].ToString(), dt.Rows[i - j + k + 1]["test"].ToString(), dt.Rows[i - j + k + 1]["id"].ToString()); } } j = 1; 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; } } } }
相关文章推荐
- CLR via C#(08)-操作符
- java.lang.IllegalArgumentException: name MUST NOT NULL! at org.nutz.dao.impl.NutDao.fetch
- 装饰模式简单的代码
- 微信JS接口安全域名填写ip地址
- linux下的grep和find命令
- java hash map深度分析(equal,hashcode,hash)
- 将文件拷贝后复制到另一位置
- 1178 -- 笨小熊
- 1177 -- 三角形面积
- ICPC 6924 Load Balancing
- Android实现虚线的方法
- Android编程初见(小白学习篇)
- css:nth-of-type()选择器用法
- CLR via C#(07)-静态类,分部类
- 【2013杭州区域赛】部分题解 hdu4770—4780
- Linux常见问题解决
- uploadify 上传插件的使用(视频和图片都可以上传)
- js面向对象轮播
- Qt——文件映射
- 计算机的异或运算符