zoukankan      html  css  js  c++  java
  • 动态合并GridView数据行DataRow的列

    前段时间,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行代码,做最后一次合并列。


    运行的结果如下:



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

  • 相关阅读:
    如何手动同步 Chrome 浏览器的数据
    如何释放 Windows 10 系统的 C 盘空间
    Foxmail
    常用 Git 命令
    常用的 .gitignore 模板
    MySQL InnoDB Engine--数据页存储和INSERT操作
    MySQL InnoDB Engine--数据页存储和ALTER TABLE操作
    MySQL InnoDB Engine--数据页存储
    MySQL Index--BAK和MRR演示
    MySQL Execute Plan--Index Merge特性
  • 原文地址:https://www.cnblogs.com/insus/p/3238348.html
Copyright © 2011-2022 走看看