前一版本《动态合并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. python3 之logging模块

    logging.getLogger(name=None)Return a logger with the specified name or, if name is None, return a lo ...

  2. DataX安装环境搭建

    DataX环境搭建 环境搭建 Java安装(java>=1.6) JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads ...

  3. 机器学习:评价分类结果(Precision - Recall 的平衡、P - R 曲线)

    一.Precision - Recall 的平衡 1)基础理论 调整阈值的大小,可以调节精准率和召回率的比重: 阈值:threshold,分类边界值,score > threshold 时分类为 ...

  4. mybatis sql中的条件语句

    1.mybatis判断是否为空或null <if test="type!=null and type!=''"> AND type = #{type} </if& ...

  5. BIOS简单设置 解析“集成显卡”内存占用问题

    很多使用集成显卡的用户会发现,在系统信息窗口中,内存容量和实际不一样.比如系统内存显示4GB,可用3.48G之类.这不可用的一部分内存到哪去了? 其实减少的这部分内存是被集成显卡占用当做显存使用了.而 ...

  6. css3弹性布局语法全解

    本文介绍css3弹性布局的语法 html布局 <div class="box"> <div class="item">1</div ...

  7. 12-22C#公共控件(基本功能)

    在C#窗体中,公共控件的基本功能: 1.获取.设置控件的参数值: 2.事件(其实是一种特殊的方法和属性,当被其他外力触发它,就会发生,类似数据库的触发器.) 下面是基本的公共控件: 1.复选框 1)设 ...

  8. 如何利用MATLAB并行计算缩短程序运行时间

    本来CPU就是双核,不过以前一直注重算法,没注意并行计算的问题.今天为了在8核的dell服务器上跑程序才专门看了一下.本身写的程序就很容易实现并行化,因为beamline之间并没有考虑相互作用.等于可 ...

  9. python request (1) 环境

    环境准备 requests   httpbin  virtualenv  pip  python 安装 #mkdir /home/requests #yum install -y python-pip ...

  10. C语言学习笔记--多维数组和多维指针

    1. 指向指针的指针 (1)指针的本质是变量,会占用一定的内存空间 (2)可以定义指针的指针来保存指针变量的地址值 (3)指针是个变量,同样也存在传值调用与传址调用 重置动态空间的大小 #includ ...