前一版本《动态合并Repeater控件数据列http://www.cnblogs.com/insus/p/3240848.html 。
今天Insus.NET重新演示它,为什么? 因为两点足需要重新写过。一是在cs生成的列代码有冗余,这是小事;二是某一情况之下,可能在合并时,会有异常。怎样说呢?由于例子中需要合并的列的数据刚好连续,当时是计算相同的数据做统计,如果遇上不连续,相同的数据时,也会统计在一起,这样异常出现可想而知。

此篇最始码解决上面的问题,另外使用全新的计算方法进行合并列统计。

Html markup重点在于highlight部位。

去.aspx.cs写程序,先创建一个类,它是将是合并列基本对象。

再创建另外一个类,来处理合并列的数据,统计出连续相同的数据,它们的开始行索引和结束先索引。

我们现在开始,为Repeater控件绑定数据,以及做好合并例的开始与结束行索引。

上图代码示例中, #27至#31行的集合,如果输出的结果,将会是如下:

 StringBuilder sbo = new StringBuilder();
sbo.Append("<table style=\"border: 1px solid #0094ff; border-collapse: collapse; width: 40%;\"><tr><td style=\"border: 1px solid #0094ff;\">数据</td><td style=\"border: 1px solid #0094ff;\">行开始索引</td><td style=\"border: 1px solid #0094ff;\">行结束索引</td></tr>"); foreach (var f in objFieldHelper.Fields)
{
sbo.Append("<tr><td style=\"border: 1px solid #0094ff;\">" + f.Data + "</td><td style=\"border: 1px solid #0094ff;\">" + f.StartRowIndex + "</td><td style=\"border: 1px solid #0094ff;\">" + f.EndRowIndex + "</td></tr>");
}
sbo.Append("</table>");

现在我们来写OnItemDataBound="RepeaterFruit_ItemDataBound"事件。

#48和#65行是解决前一版本的代码冗余部问题。
#52行,如果开始行索引等于集合的行开始索引一样,就开始处理列合并。
#54行,是没有连续的数据,那不必做合并。
#56行,有列可合并,在集合中把行结束索引减去行开始索引加上1即等于合并的行数,作为rowspan的值。
#61行,一旦处理完列合并之后,跳出前次循环。

理解起来应该是很简单明了。

看看最终的效果:

动态合并Repeater控件数据列 Ver2的更多相关文章

  1. 动态合并Repeater控件数据列

    前天Insus.NET实现<动态合并GridView数据行DataRow的列>.今天再玩玩Repeater控件,功能也是动态合并某列栏位.Repeater控件跟GridView控件一样集成 ...

  2. 动态变更Repeater控件HeaderTemplate列名

    本博文,Insus.NET教你动态实现变更Repeater控件HeaderTemplate列名.一般情况之下,是不需要动态变更,只有动态有Repeater控件不变情况之下,来显示多种数据源进行绑定.这 ...

  3. asp.net动态网站repeater控件使用及分页操作介绍

    asp.net动态网站repeater控件使用及分页操作介绍 1.简单介绍 Repeater 控件是一个容器控件,可用于从网页的任何可用数据中创建自定义列表.Repeater 控件没有自己内置的呈现功 ...

  4. 动态横向(水平)合并Repeater数据行DataItem的列

    Insus.NET有对GridView控件进行横纵分别合并列:横:<动态横向(水平)合并GridView数据行DataRow的列>http://www.cnblogs.com/insus/ ...

  5. 动态合并GridView数据行DataRow的列

    前段时间,Insus.NET一直在演示GridView控件Header头行或列:<动态变更GridView控件列名>和<动态合并或定制GridView控件Header头某些列> ...

  6. Repeater控件添加序号列

    在项目开发过程中,会经常遇到ASP.NET repeater控件添加序号列,有些新手可能还不会,网上搜集整理了一些,需要的朋友可以参考下 ASP.NET repeater添加序号列的方法 1.< ...

  7. 动态绑数据(Repeater控件HeaderTemplate和ItemTemplate)

    前几天,Insus.NET有写了<动态绑数据(GridView控件Header和ItemTemplate)>http://www.cnblogs.com/insus/p/3303192.h ...

  8. ListCtrl 控件数据动态改动

    參考文章:ListCtrl 控件数据动态改动 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDIzNjU1MA==/font/5a6L5L2T/f ...

  9. 一个动态扩展表格控件列和行的 jQuery 插件

    一个动态扩展表格控件列和行的 jQuery 插件 不过这并不影响使用鸭! 看这里:https://github.com/zhuwansu/table-ext.js 一个简单的示范 html <t ...

随机推荐

  1. 关于C语言字符串函数使用的一点心得

    就字符串的拼接函数为例strcat. 原型:extern char *strcat(char *dest,char *src);用法:#include <string.h> 功能:把src ...

  2. UFLDL新版教程

    http://ufldl.stanford.edu/tutorial/ 还带编程作业.

  3. 解决ListView 缓存机制带来的显示不正常问题

    ListView加载数据原理:系统绘制ListView时,首先会用getCount()函数得到要绘制的这个列表的长度,然后开始逐行绘制.然后调用getView()函数,在这个函数里面首先获得一个Vie ...

  4. maven用途、核心概念、用法、常用参数和命令、扩展

    设置问题解决. http://trinea.iteye.com/blog/1290898 本文由浅入深,主要介绍maven的用途.核心概念(Pom.Repositories.Artifact.Buil ...

  5. SQL子查询/嵌套查询

    sql子查询 嵌套SELECT语句 嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询不但能够出现在Where子句中,也能够出现在from子句中,作为 ...

  6. springboot或者jetty等启动服务器后,如何去停止这个服务

    首先在win7下找到运行,但是win7的运行不像XP那么好找,win7运行的位置在:开始→所有程序→附件→运行.   然后在对话框中,输入cmd(大小写均可).   然后是如何查看80端口的方法,一般 ...

  7. web聊天相关知识

    http相关知识 http是无状态,请求,响应模式的通信模式,就是用户每次通过浏览器点击一下页面,都需要重新与web服务器建立一下连接,且发送自己的 session id 给服务器端以使服务器端验证此 ...

  8. Spring单例Bean和线程安全

    Spring的bean默认都是单例的,这些单例Bean在多线程程序下如何保证线程安全呢?例如对于Web应用来说,Web容器对于每个用户请求都创建一个单独的Sevlet线程来处理请求,引入Spring框 ...

  9. js兼容事件

    //浏览器检测(function () { window.sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua.ma ...

  10. 基于:Hadoop 2.6.0-cdh5.4.0 hive1.1.0 HBase 1.0.0-cdh5.4.0 关键配置文件

    core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value ...