我对控件的依懒是比较少的。有几个控件我比较喜欢用,例如REPEATER显示列表的控件,能提供很大的方便。

  使用REPEATER有一个比较方便的功能是通过几句代码就实现了相同项合并单元格合并,这个虽然平时比较少用到,可是有时候客户或者经理比较刁钻的时候,就感觉这个真是好啊!

  今天要用AJAX实现一个效果的时候,REPEATER列表控件就没法派上用场,这时我得想办法,根据HTML的一些规律来实现表格相同项的单元格合并。

  折腾,终算把效果实现了。备记在这里。

ERP_Reports reprots = new ERP_Reports();
DataTable dtXSSJFX = reprots.GetXSSJFX_DX(txtSDate.Text, txtEDate.Text);//获得销售数据分析报表
if (dtXSSJFX.Rows.Count > )
{
StringBuilder sb = new StringBuilder();
int rowsIndex = ;
for (int i = ; i < dtXSSJFX.Rows.Count; i++)
{ if ((i + ) != dtXSSJFX.Rows.Count)
{
if (dtXSSJFX.Rows[i]["dlmc"].ToString() == dtXSSJFX.Rows[i + ]["dlmc"].ToString())
{
rowsIndex++;
}
else
{
sb.AppendLine("<tr style=\"line-height:24px\" onmouseout=\"this.style.backgroundColor=backupcolor\" onmouseover=\"this.backupcolor=this.style.backgroundColor;this.style.backgroundColor='#F1F6FF'\">");
sb.AppendFormat(" <td rowspan=\"{0}\" style=\"text-align: left; width: 100px; \">{1}</td>", rowsIndex, dtXSSJFX.Rows[i]["dlmc"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex]["jjmc"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex]["sl_jm"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex]["je_jm"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex]["zb_jm"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex]["sl_zy"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex]["je_zy"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex]["zb_zy"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex]["sl_hj"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex]["je_hj"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex]["zb_hj"].ToString());
sb.AppendLine("</tr>"); for (int j = ; j < rowsIndex; j++)
{
sb.AppendLine("<tr style=\"line-height:24px\" onmouseout=\"this.style.backgroundColor=backupcolor\" onmouseover=\"this.backupcolor=this.style.backgroundColor;this.style.backgroundColor='#F1F6FF'\">");
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex + j]["jjmc"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex + j]["sl_jm"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex + j]["je_jm"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex + j]["zb_jm"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex + j]["sl_zy"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex + j]["je_zy"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex + j]["zb_zy"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex + j]["sl_hj"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex + j]["je_hj"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[i + - rowsIndex + j]["zb_hj"].ToString());
sb.AppendLine("</tr>");
}
rowsIndex = ;
}
}
else
{
sb.AppendLine("<tr style=\"line-height:24px\" onmouseout=\"this.style.backgroundColor=backupcolor\" onmouseover=\"this.backupcolor=this.style.backgroundColor;this.style.backgroundColor='#F1F6FF'\">");
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[dtXSSJFX.Rows.Count - ]["dlmc"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[dtXSSJFX.Rows.Count - ]["jjmc"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[dtXSSJFX.Rows.Count - ]["sl_jm"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[dtXSSJFX.Rows.Count - ]["je_jm"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[dtXSSJFX.Rows.Count - ]["zb_jm"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[dtXSSJFX.Rows.Count - ]["sl_zy"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[dtXSSJFX.Rows.Count - ]["je_zy"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[dtXSSJFX.Rows.Count - ]["zb_zy"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[dtXSSJFX.Rows.Count - ]["sl_hj"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[dtXSSJFX.Rows.Count - ]["je_hj"].ToString());
sb.AppendFormat(" <td style=\"text-align: left; width: 100px; \">{0}</td>", dtXSSJFX.Rows[dtXSSJFX.Rows.Count - ]["zb_hj"].ToString());
sb.AppendLine("</tr>");
} }
litHTMLS.Text = sb.ToString();

  

ASP.NET- 合并HTML的表格相同项单元格的更多相关文章

  1. asp.net使用控件datagrid实现表头单元格合并

    合并的要点: 1.datagid的单元格合并原理是table中tr,td的布局实现; 2.合并的时机实在其datagridcreate事件中实现; 3.认识一个对象TableCellCollectio ...

  2. FineUI大版本升级,外置ExtJS库、去AXD化、表格合计行、表格可编辑单元格的增删改、顶部菜单框架

    这是一篇很长的文章,在开始正文之前,请允许我代表目前排名前 20 中唯一的 .Net 开源软件 FineUI 拉下选票: 投票地址: https://code.csdn.net/2013OSSurve ...

  3. Swift - 给表格添加移动单元格功能(拖动行)

    1,下面的样例是给表格UITableView添加单元格移动功能: (1)给表格添加长按功能,长按后表格进入编辑状态  (2)在编辑状态下,可以看到单元格后面出现拖动按钮  (3)鼠标按住拖动按钮,可以 ...

  4. Javascript合并表格相同内容单元格示例

    效果图: HTML代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  5. JQuery实现表格的相同单元格合并的三种方法

    代码: <!DOCTYPE html> <html> <head> <title>merge.html</title> <meta h ...

  6. Excel表格如何保护单元格不被修改

    Excel如何保护单元格不被修改  有时使用Excel时希望保护单元格不被修改,这可以叫做单元格的“写保护”即把光标定位在一个不允许输入数据的区域内时,是无论如何也无法在里面输入数据的.下面咱们就一起 ...

  7. WebDriver获得表格里所有单元格的文本

    方法为: 1. 得到表格中所有的tr,存到list到中 2.对tr进行循环,根据当前的tr,得到当前所有td的集合存到list当中 3.循环中所有td里的文本 package com.example. ...

  8. NX二次开发-UFUN工程图表格注释设置单元格首选项UF_TABNOT_set_cell_prefs

    NX9+VS2012 #include <uf.h> #include <uf_tabnot.h> #include <NXOpen/Part.hxx> #incl ...

  9. ExtJs GridPanel 给表格行或者单元格自定义样式

    Ext.onReady(function(){ Ext.create('Ext.data.Store', { storeId:'simpsonsStore', fields:['name', 'ema ...

随机推荐

  1. Android:@id和@+id

    @id代表引用已有的id,而@+id是新增加一个id 如果使用@+id/name形式,当R.java中存在名为name变量时,则该组件会使用该变量的值作为标识.如果不存在该变量,则添加一个新的变量,并 ...

  2. Java IO2:字节流

    输入输出流: • 输入/输出时, 数据在通信通道中流动. 所谓“数据流(stream)”指的是所有数据通信通道之中,数据的起点和终点. 信息的通道就是一个数据流.只要是数据从一个地方“流” 到另外一个 ...

  3. JDK个目录,以及与环境变量的关系

    最近学习过程中老是看JDK里面的东西,可每次都翻书找,找了又忘.JDK,我们今天来个了断吧........ 一:bin: JDK中所包含的开发工具的可执行文件,PATH环境变量应该包含一个指向此目录的 ...

  4. Extension Method[下篇]

    四.Extension Method的本质 通过上面一节的介绍,我们知道了在C#中如何去定义一个Extension Method:它是定义在一个Static class中的.第一个Parameter标 ...

  5. 手机通过WIFI连上ZXV10 H618B路由器但不能上网问题的解决

    前几天朋友帮忙拿到一个ZXV10 H618B路由器,一看需要12V供电,还好以前留下一个12V输出的DC充电器,关键时刻用上了,先大概下载了此路由器的用户手册,发现原来是08年的产品,都5年了. 开始 ...

  6. Java开发之多线程下载和断点续传

    代码实现了多线程下载和断点续传功能 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream ...

  7. 深入理解Java虚拟机 - 垃圾收集概述

    首先需要澄清的是,垃圾收集(GC)的历史远比Java要久远,当我们意识到手动管理内存所带来的麻烦时,懒惰的天性推动先驱们寻找更为简单.易用.关键是傻瓜式的内存管理技术.GC技术起源于1960年诞生于M ...

  8. NOI2003 逃学的小孩

    这一题不会做啊…… 我觉得真要比赛的话我可能会随机上几万次,然后再用LCA求距离,更新最优值,等到快超时的时候输出答案…… 题解请看2007年陈瑜希论文 代码: ; type node=record ...

  9. RMAN数据库异机迁移步骤

    --RMAN数据库异机迁移步骤----------------------------2013/09/28 测试环境:AIX+ora11g   一. source数据库准备.   1.获取数据文件编号 ...

  10. 【转】Cygwin的包管理器:apt-cyg

    原文网址:http://zengrong.net/post/1792.htm Cygwin的包管理工具setup.exe实在是难用的让人蛋碎.于是就有了这样一个apt-cyg,可以提供类似于 apt- ...