using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Web.UI.WebControls;

/// <summary>
///GridViewMergeCell 合并GridView liyang 20090916
/// </summary>
public class GridViewMergeCell
{
    public GridViewMergeCell()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }
    #region 合并单元格 合并某一行的所有列
    public static void GroupRow(GridView gridView)
    {
        for (int rowIndex = gridView.Rows.Count - 2; rowIndex >= 0; rowIndex--)
        {
            GridViewRow row = gridView.Rows[rowIndex];
            GridViewRow previousRow = gridView.Rows[rowIndex + 1];

for (int i = 0; i < row.Cells.Count; i++)
            {
                if (row.Cells[i].Text == previousRow.Cells[i].Text)
                {
                    row.Cells[i].RowSpan = previousRow.Cells[i].RowSpan < 2 ? 2 :
                                           previousRow.Cells[i].RowSpan + 1;
                    previousRow.Cells[i].Visible = false;
                }
            }
        }
    }
    ///  <summary> 
    ///  合并GridView中某行相同信息的行(单元格)
    ///  </summary> 
    ///  <param  name="GridView1">GridView对象</param> 
    ///  <param  name="cellNum">需要合并的行</param>
    public static void GroupRow(GridView gridView, int rows)
    {
        TableCell oldTc = gridView.Rows[rows].Cells[0];
        for (int i = 1; i < gridView.Rows[rows].Cells.Count; i++)
        {
            TableCell tc = gridView.Rows[rows].Cells[i];  //Cells[0]就是你要合并的列
            if (oldTc.Text == tc.Text)
            {
                tc.Visible = false;
                if (oldTc.ColumnSpan == 0)
                {
                    oldTc.ColumnSpan = 1;
                }
                oldTc.ColumnSpan++;
                oldTc.VerticalAlign = VerticalAlign.Middle;
            }
            else
            {
                oldTc = tc;
            }
        }
    }
    #endregion
    #region 合并单元格 合并一行中的几列
    /// <summary>
    /// 合并单元格 合并一行中的几列
    /// </summary>
    /// <param name="GridView1">GridView ID</param>
    /// <param name="rows">行</param>
    /// <param name="sCol">开始列</param>
    /// <param name="eCol">结束列</param>
    public static void GroupRow(GridView gridView, int rows, int sCol, int eCol)
    {
        TableCell oldTc = gridView.Rows[rows].Cells[sCol];
        for (int i = 1; i < eCol - sCol; i++)
        {
            TableCell tc = gridView.Rows[rows].Cells[i + sCol];  //Cells[0]就是你要合并的列
            tc.Visible = false;
            if (oldTc.ColumnSpan == 0)
            {
                oldTc.ColumnSpan = 1;
            }
            oldTc.ColumnSpan++;
            oldTc.VerticalAlign = VerticalAlign.Middle;
        }
    }
    #endregion
    #region 合并单元格 合并某一列所有行
    /// <summary>
    /// 合并GridView中某列相同信息的行(单元格)
    /// </summary>
    /// <param name="GridView1"></param>
    /// <param name="cellNum"></param>
    public static void GroupCol(GridView gridView, int cols)
    {
        if (gridView.Rows.Count < 1 || cols > gridView.Rows[0].Cells.Count - 1)
        {
            return;
        }
        TableCell oldTc = gridView.Rows[0].Cells[cols];
        for (int i = 1; i < gridView.Rows.Count; i++)
        {
            TableCell tc = gridView.Rows[i].Cells[cols];
            if (oldTc.Text == tc.Text)
            {
                tc.Visible = false;
                if (oldTc.RowSpan == 0)
                {
                    oldTc.RowSpan = 1;
                }
                oldTc.RowSpan++;
                oldTc.VerticalAlign = VerticalAlign.Middle;
            }
            else
            {
                oldTc = tc;
            }
        }
    }
    #endregion
    #region 合并单元格 合并某一列中的某些行
    /// <summary>
    /// 合并单元格 合并某一列中的某些行
    /// </summary>
    /// <param name="GridView1">GridView ID</param>
    /// <param name="cellNum">列</param>
    /// <param name="sRow">开始行</param>
    /// <param name="eRow">结束列</param>
    public static void GroupCol(GridView gridView, int cols, int sRow, int eRow)
    {
        if (gridView.Rows.Count < 1 || cols > gridView.Columns.Count - 1)
        {
            return;
        }
        TableCell oldTc = gridView.Rows[sRow].Cells[cols];
        for (int i = 1; i < eRow - sRow; i++)
        {
            TableCell tc = gridView.Rows[sRow + i].Cells[cols];
            tc.Visible = false;
            if (oldTc.RowSpan == 0)
            {
                oldTc.RowSpan = 1;
            }
            oldTc.RowSpan++;
            oldTc.VerticalAlign = VerticalAlign.Middle;
        }
    }
    #endregion
}

转载于:https://www.cnblogs.com/diony/archive/2011/08/19/2145759.html

GridView 合并列、行类相关推荐

  1. GridView合并列下的行单元格的方法

    1.在GridView中要合并单元格,如得到如下效果 可在GridvIew中调的DataBind事件调用下面类中的方法,先在项目的App_Code文件夹下添加下面的类,下面类中写了两个方法,一个是模板 ...

  2. GRIDVIEW多行多列合并单元格(合并列)

    GitHub项目地址:https://github.com/mingceng/merge-gridviewcell 去年的时候,我写了两篇文章:  GridView多行多列合并单元格(完整代码和例子) ...

  3. 通过poi导出复杂excel既有合并行又有合并列

    通过poi导出形如以下的复杂excel: 此excel里左边和右边的用户可以自由选择是否导出这几列,中间的题型有单选.多选.填空.排序 这是详情表,还有分值表如下: 占比表如下: 我自己写了个针对上面 ...

  4. element UI table合并行合并列(整理)

    效果图1: 图一 <template><div class="container"><el-table :data="dataSource& ...

  5. 记录:mysql行合并列合并显示

    搬砖时遇到一个sql需要合并行 且 合并 列字段 显示的要求,好像是第一次写,记录一下. SELECT   b.push_id AS pushId,     b.push_time AS pushTi ...

  6. e-table 合并行 合并列

    先来一一个数组  [1,2,0,1,3,0,0] 比如一个e-table   有多少行,这个数组就有多少元素 1 表示正常,2 表示 当前和下面一个合并单元格,那么后一个就是0,  3表示 当前与下面 ...

  7. Excel:有合并列和横排多行的每个单元格数据与首列组合竖排

    需求如图: 左侧表格转为右侧的,注意:有合并列和多行 解决方法: (1)选中(单击)数据表中任意格子,以定位数据来源表格 (2)数据--获取数据--自其他源--自表格/区域 步骤如图: (3) 在弹出 ...

  8. 前端HTML CSS合并行、合并列

    在初学前端时,对于表格中的合并行,合并列不是很清楚,下面是自己的理解 合并行:rowspan 合并列:colspan 就下图所示,这个表有3行6列, 我们可以分析图上的合并情况 接下来就是代码了 在h ...

  9. markdown表格合并列和行

    文章目录 markdown表格 vscode下 multi-markdown vscode下markdown加载latex markdown表格 markdown基础语法中不支持表格行和列的合并写法, ...

最新文章

  1. D3可视化:(1)初次见面,SVG与D3的魅力
  2. Linux负载均衡Nginx六种策略
  3. 用Python采集了几千条相亲文案,终于发现了告别单身的秘密
  4. centos磁盘满了,查找大文件并清理
  5. AIRSDK 3.7 加载远程的含有代码的swf文件
  6. 我在软件协会修WiFi
  7. 华为手机计算机快捷,快速让华为手机变成一台电脑,INNOCN便携显示器的更多玩法...
  8. python,检测代理ip是否有效
  9. PowerBI可视化实战:商品销售动态ABC分析案例
  10. android设置标题颜色设置颜色,设置标题背景颜色
  11. 成都博兰科技有限公司助宝兰网进入云贵川渝市场 www.beylai.com
  12. 蒙牛发言人香港发言措辞欠妥
  13. matlab简易画爱心
  14. 职称计算机ppt教程,职称计算机:Word文档转为PPT的两种方法
  15. 细节:如何轻松影响他人
  16. 中鑫吉鼎|家庭成长期如何进行理财规划
  17. jacob调用精伦身份证读卡器
  18. oracle sql developer的简单使用
  19. python 乘法运算定律_乘法运算定律专项练习题整理
  20. Sprintboot redis 采用gzip和Snappy compress压缩数据

热门文章

  1. 【爆牙齿】说说我期待中的苹果那块板子。
  2. Java多线程(二)——多线程基本特性
  3. python怎样播放音乐_Python如何播放音乐?
  4. 项目启动会ppt_公司召开SAPERP项目启动会
  5. html5文章标题定格,HTML5最佳做法; 部分/标题/旁边/文章元素
  6. harmonyos2.0怎么更新,harmonyOS 2.0什么时候更新 harmonyOS 2.0手机开发者Beta版更新内容[多图]...
  7. SQL基础面试题(五)
  8. java语言构造顺序树_PAT-1086(Tree Traversals Again)Java语言实现+根据中序和前序遍历构建树并且给出后序遍历序列...
  9. LeetCode 515. 在每个树行中找最大值(广度优先搜索)
  10. 《GPU高性能编程CUDA实战》代码整理