我对控件的依懒是比较少的。有几个控件我比较喜欢用,例如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四大基本组件

    Android四大基本组件分别是 Activity:整个应用程序的门面,负责与用户进行交互. Service:承担大部分工作. Content Provider内容提供者:负责对外提供数据,并允许需要 ...

  2. *J2EE中乱码处理

    发生中文乱码有三种情况 表单form (1)post 首先确定浏览器的编码方式,比如说utf-8,请求发给web服务器,web服务器以编码方式iso-9959-1来接收数据(服务器是外国人编写的),服 ...

  3. POJ2531——Network Saboteur(随机化算法水一发)

    Network Saboteur DescriptionA university network is composed of N computers. System administrators g ...

  4. CVE爬虫抓取漏洞URL

    String url1="http://www.cnnvd.org.cn/vulnerability/index/vulcode2/tomcat/vulcode/tomcat/cnnvdid ...

  5. HTTP认证方式

    HTTP请求报头: Authorization HTTP响应报头: WWW-Authenticate   HTTP认证 基于 质询 /回应( challenge/response)的认证模式.   ◆ ...

  6. 驱动之路-platform简例按键驱动☆☆☆

    一 .重要知识点: ▉1.platform设备模型 从Linux 2.6起引入了一套新的驱动管理和注册机制,platform_device和platform_driver,Linux中大部分的设备驱动 ...

  7. android系统平台显示驱动开发简要:Samsung LCD接口篇『三』

    平台信息: 内核:linux3.4.39系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新浪博 ...

  8. LINUX进程优先级实现

    首先linux进程优先级的范围是-20到19 将当前目录下的documents目录打包,但不希望tar占用太多CPU: nice -19 tar zcf pack.tar.gz documents 这 ...

  9. 【HDOJ】4347 The Closest M Points

    居然是KD解. /* 4347 */ #include <iostream> #include <sstream> #include <string> #inclu ...

  10. Python中的函数对象与闭包

    函数在Python中是第一类对象,可以当做参数传递给其他函数,放在数据结构中,以及作为函数的返回结果. 下面的例子为接受另外一个函数作为输入并调用它 #foo.py def callf(func): ...