前段时间,Insus.NET一直在演示GridView控件Header头行或列:《动态变更GridView控件列名》和《动态合并或定制GridView控件Header头某些列》,现今想演示合并Gridview的DataRow中的列。

其实合并列也不是什么复杂的问题,只想明白其中的原理,就觉得简单至极。
数据库方面的准备,在此例中略过。
在站点创建一个网页,拉GridView控件到.aspx网页中,并用自定义模版显示数据。如下:

去.aspx.cs的code behind写数据绑定代码:

网页在浏览时,会看到下面的效果:

看到否,上图中第二列,有很KindName的相同的,为了界面简洁与清晰,Insus.NET决定合并它们。为了实现数据行中的列合并,我们需要为GridView控件写一个事件 OnRowCreated="GridViewFruit_RowCreated":

现在,我们可以去code behind写程序了,在写OnRowCreated事件程序之前,先需要定义一个页面级的变量:

上图中的变量,rowCount将记录所有记录总数,初始值为0。rowindex是将用来记录行索引,初始值为0, 而mergeCellText变量是合并的字段名。

OK,下面我们开始写OnRowCreated事件逻辑程序:

上图中:
#35行代码,如果不是数据行,将跳过下面的程序。
#37行,把e.Row.DataItem转为DataRowView。
#39-#43行代码,如果是DataRow第一行,将行索引和将要合并的列值记录下来。
#45 -#62行代码,均是处理非第一数据行。
#47行代码,如果当前行需要合并的数据列值与前一行不相同的,我们就可以合并前面的数据列了。还要把当前的行索引与列值记录下来。
#55行把相同的列拿掉。
#57行代码是判断是否为最后一行。
#59行代码,做最后一次合并列。

运行的结果如下:

如果你明白上面的逻辑处理方法,做其它列合并,是轻而易举的事情。

动态合并GridView数据行DataRow的列的更多相关文章

  1. 动态横向(水平)合并GridView数据行DataRow的列

    前一段时间,Insus.NET有写过<动态合并GridView数据行DataRow的列>http://www.cnblogs.com/insus/p/3238348.html, 那是纵向( ...

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

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

  3. Mouse单击高亮GridView数据行

    有网友需要对GridView控件作一些操作.不过有些复杂,Insus.NET细分他的要求,一步一步来实现.不过细分的每一步,亦是一个小功能.因此Insus.NET就单独实现,然后一起结合起来,就是可以 ...

  4. PyQt(Python+Qt)学习随笔:QTableView中数据行高和列宽的调整方法

    老猿Python博文目录 老猿Python博客地址 一.概述 在QTableView中,除了采取缺省的间隔显示行和列的数据外,还可以通过带调整数据的行高和列宽. 二.列宽调整方法 调整数据行列宽的方法 ...

  5. 使用element-ui 组件动态合并table的行/列(第二次修改)

    这是第二次修改,在通过调用后台接口返回来的时候,发现了代码中的问题:现在将博客中错误的地方改过来,添加备注 文章需求:动态实现table表格中行/列的自动合并 使用框架及UI类库:Vue+Elemen ...

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

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

  7. 动态合并Repeater控件数据列 Ver2

    前一版本<动态合并Repeater控件数据列>http://www.cnblogs.com/insus/p/3240848.html .今天Insus.NET重新演示它,为什么? 因为两点 ...

  8. gridview合并相同的行

    #region 方法:合并Gridview行    /// <summary>    /// 合并GridView指定行单元格    /// </summary>    /// ...

  9. C#动态操作DataTable(新增行、列、查询行、列等)

    public void CreateTable() { //创建表 DataTable dt = new DataTable(); //1.添加列 dt.Columns.Add("Name& ...

随机推荐

  1. Linux下markdown编辑软件 — retext 支持实时预览,存为pdf、html、ODT等

    本文由Suzzz原创,发布于 http://www.cnblogs.com/Suzzz/p/4129368.html,转载请保留此声明 ReText是一个linux下的markdown和reStruc ...

  2. window内置对象学习

    1.location:本页面的location对象 对象属性图示: 对象属性: 对象方法: 2.history:是本页面的浏览历史 history对象记录了用户曾经浏览过的页面(URL),并可以实现浏 ...

  3. IPv4 forwarding is disabled. Networking will not work.

    centos 7 docker 启动了一个web服务 但是启动时 报 WARNING: IPv4 forwarding is disabled. Networking will not work. 网 ...

  4. vue实用难点讲解

    此篇文章是我基于研究vue文档三遍的基础上,觉得还有点难理解或者难记的知识点总结 列表渲染 1.渲染组件必须加key,并且属性是手动传递给组件的 <my-component v-for=&quo ...

  5. LAMP 2.1Apache不记录指定文件类型日志

    访问日志只需要记地址,不用记录图片. 对无用的图片日志做标记,针对标记做限制.打开 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 把 Erro ...

  6. SQL 实现行列互换

    Oracle:不过大多数是采用 oracle 数据库当中的一些便捷函数进行处理,比如 ”pivot”: MySql:目前没有找到更好的方法 题目:数据库中有一张如下所示的表,表名为sales. 年 季 ...

  7. show table detail

    create table #t(name varchar(255), rows bigint, reserved varchar(20),data varchar(20), index_size va ...

  8. 【总结整理】WebGIS学习-thinkGIS(二):关于level,比例尺scale,分辨率resolution

    1.Level包含了一个resolution参数和一个scale参数 瓦片本身: 我们用arcgis切完图后,打开发布的服务或者打开config.xml配置文件,可以看到所切之图的相关配置.如图所示: ...

  9. HTML5的头部、拨号、短信、邮件(转)

    HTML5[语法要点] 一.头部设置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <!--页面窗口自动调整到设备 ...

  10. Gearman 分布式的异步任务分发框架

    What is Gearman? Gearman provides a generic application framework to farm out work to other machines ...