分享两段行列合并算法

使用一个将指定行列的gridview横向纵向合并行列,实现多复杂表头样式

调用:

GridCommon.Unitelist(this.grid1, 4);

GridCommon.GroupCol(this.grid1, 4, dt.Columns.Count);

        /// <summary>
        /// 横向合并列
        /// </summary>
        public static void Unitelist(GridView gv, int rowIndex)
        {
            if (gv.Rows.Count < 1)
            {
                return;
            }
            TableRow tr;
            for (int i = 0; i < rowIndex; i++)
            {
                tr = gv.Rows[i];
                if (gv.Rows[i].Cells.Count < 1)
                {
                    return;
                }
                TableCell otcell = gv.Rows[i].Cells[0];
                otcell.BackColor = System.Drawing.Color.FromArgb(219, 234, 253); //System.Drawing.Color.Teal;
                otcell.HorizontalAlign = HorizontalAlign.Center;
                for (int j = 1; j < gv.Rows[i].Cells.Count; j++)
                {
                    TableCell tcell = gv.Rows[i].Cells[j];
                    if (tcell.Text == otcell.Text)
                    {
                        tcell.Visible = false;
                        if (otcell.ColumnSpan == 0)
                        {
                            otcell.ColumnSpan = 1;
                        }
                        otcell.ColumnSpan++;
                        otcell.VerticalAlign = VerticalAlign.Middle;
                        otcell.HorizontalAlign = HorizontalAlign.Center;
                        otcell.BackColor = System.Drawing.Color.FromArgb(219, 234, 253); //System.Drawing.Color.Teal;213, 237, 249
                        otcell.Wrap = false;
                    }
                    else
                    {
                        otcell = tcell;
                        otcell.HorizontalAlign = HorizontalAlign.Center;
                        otcell.BackColor = System.Drawing.Color.FromArgb(219, 234, 253);//System.Drawing.Color.Teal;
                    }
                }
            }
        }
        /// <summary>
        /// 纵向合并列
        /// </summary>
        /// <param name="gv">GridView</param>
        /// <param name="colIndex">合并列的序号</param>
        public static void GroupCol(GridView gv, int rowIndex, int CellIndex)
        {
            if (gv.Rows.Count < 1)
            {
                return;
            }
            TableRow tr;
            for (int j = 0; j < CellIndex; j++)
            {
                TableRow oldTr = gv.Rows[0];
                for (int i = 1; i < rowIndex; i++)
                {
                    tr = gv.Rows[i];
                    if (oldTr.Cells[j].Text == tr.Cells[j].Text)
                    {
                        tr.Cells[j].Visible = false;
                        if (oldTr.Cells[j].RowSpan == 0)
                        {
                            oldTr.Cells[j].RowSpan = 1;
                        }
                        oldTr.Cells[j].RowSpan++;
                        oldTr.VerticalAlign = VerticalAlign.Middle;
                    }
                    else
                    {
                        oldTr = tr;
                    }
                }
            }
        }

  

时间: 2024-07-30 20:38:52

分享两段行列合并算法的相关文章

java合并两段音频成一段 同时播放类似伴奏

/** * * @param partsPaths 要合成的音频路径数组 * @param unitedFilePath 输入合并结果数组 */ public void uniteWavFile(String[] partsPaths, String unitedFilePath) { byte byte1[] = getByte(partsPaths[0]); byte byte2[] = getByte(partsPaths[1]); byte[] out = new byte[byte1.

STL源码剖析——STL算法之merge合并算法

前言 由于在前文的<STL算法剖析>中,源码剖析非常多,不方便学习,也不方便以后复习,这里把这些算法进行归类,对他们单独的源码剖析进行讲解.本文介绍的STL算法中的merge合并算法.源码中介绍了函数merge.inplace_merge.并对这些函数的源码进行详细的剖析,并适当给出使用例子,具体详见下面源码剖析. merge合并算法源码剖析 // merge, with and without an explicitly supplied comparison function. //将两个

分享两个你可能不知道的Java小秘密

引言 最近LZ的工作发生了重大变化,以后博文的更新速度可能会再度回温,希望猿友们可以继续关注. 近期LZ辞掉了项目经理的工作,不过并未离开公司,是转到了基础研发部做更基础的研发,为广大技术人员服务.这会让LZ有更多的时间去研究一些技术方面的东西,LZ打算折腾一下spring的源码,期待有一天可以成为spring代码的贡献者. 好了,废话说到这里吧,今天先分享两个小问题的解决办法,可能你以后也会遇到的. DBCP数据源坑爹的地方 前几天系统出现了一个错误,比较奇葩.中文解释是“无法从套接字读取更多

JAVA算法2——连通性问题之快速合并算法

我们考虑的下一个算法是与快速查找算法互补的快速合并算法.它基于相同的数据结构--以对象名作为索引的数组--但由于它对元素值的解释与快速查找算法不同,因此导致了更复杂的抽象结构.在一个无循环的结构中,每个对象都与同一集合中的另一个对象有连接.要判断两个对象是否在同一个集合中,我们分别沿着每一个对象的连线走,知道到达某一个有到自身连接的对象.两个对象在同一个集合中,当且仅当他们的终点是同一个对象.如果两个对象不在同一个集合中,则分别循着他们的连线往前走,终点将不是同一个对象.那么,要实现合并操作,我

JAVA算法3——连通性问题之快速合并算法的加权版本

在进行合并操作的时候,我们不是随意的把第二棵树连接到第一棵树,而是记下每棵树的节点数,合并的时候,总是要把结点数较少的树连接到节点数较大的数上.这个改变需要修改的代码稍微多一点,而且还需要一个数组来存放节点数,但是使程序的效率提高不少,我们把这个算法称为"加权快速合并算法". public class QuickUW {     public static void main(String[] args)     {         int N=Integer.parseInt(arg

【转载】Python中如何高效实现两个字典合并,三种方法比较。

本文转载自:http://www.pythoner.com/13.html Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个问题,比较直观的想法是将两个字典做相加操作,赋值给结果字典,其代码为: 方法一: dictMerged1 = dict( dict1.items() + dict2.items() ) 然而,该方法合并时所用时间较长,效率更高的代码为: 方法二: dictMerged2 = dict( dict1,

css控制固定表头,兼容行列合并

项目中设计的报表table设计的列数相对过多,当拖动下方的滚动条时无法对应表头所对应的列,因此在网上搜索了好一段日子,最后在网上找到了一些参考资料,然后总结归纳出兼容行列合并的固定表头demo. 多浏览器没有做太多测试,在ie6中已测试通过. 功能期待了很久今天终于找到解决的方式,总结到javaeye中方便日后查阅.实现方式可能还有更好的,希望有大牛路过,给我留点更好的实现例子作日后交流之用. 以下是相关的css Html代码   <style type="text/css"&g

分享两个提高效率的AndroidStudio小技巧

原文:https://www.jianshu.com/p/68fd5373effc 这次分享两个 Android Studio 的小技巧,能够有效提高效率和减少犯错,尤其是在团队协作开发中. Getter 模板修改--自动处理 null 判断 格式化代码自动整理方法位置--广度 or 深度 好了,下面优先介绍下这两个小技巧有什么作用,然后再给出使用教程,想直接看教程的可以直接跳到最后. 目的 Getter 模板修改 开发过程中,经常会遇到空指针异常,尤其是在线上 bug 中,由于未进行 null

两段检验系统生成的identityHashCode是否重复的代码

前言:承接上一篇hashCode和identityHashCode 的关系,下面的两段简单的程序主要是检验一下系统生成的identityHashCode是否存在重复的情况. 1:可以自由控制生成对象的个数,并且不受测试的类是否重写hashCode()方法的影响 import java.util.HashSet; import java.util.Set; public class CheckSystemIdentity { public static void main(String args[