注册 登录
编程论坛 ASP.NET技术论坛

经常看到很多人问datagrid的合并单元格的问题,我找到好的,拿出来分享

ASP汽车 发布于 2008-01-04 09:59, 1293 次点击
private   void   span(   int   icolumn   )   
        {   
            //功能说明:用于完成合并单元格   
            //参数说明:想合并列的序号   
            //返回说明:没有返回值   
            //受影响项:页面的datagrid被修改   
   
            string[]   sMonth=new   string[icolumn+1];//存放存放待合并单元格所在行前几个单元格的内容   
            int   j=1;//存放合并单元格的rowspan值   
            int   t=0;//存放待合并单元格的首个单元格行值   
            bool   tf;//存放判断结果   
            for(int   i2=0;i2<=icolumn;i2++)   
            {   
                //初始化数组   
                sMonth[i2]=DataGrid1.Items[0].Cells[i2].Text;//---就是你自己datagrid的名字
            }   
   
            //记录级循环   
            for(int   i=1;i<DataGrid1.Items.Count;i++)   
            {   
                //判断当前单元格的内容是否与待合并的单元格一样   
                tf=true;   
                for(int   i2=0;i2<=icolumn;i2++)   
                {   
                    if(!DataGrid1.Items[i].Cells[i2].Text.Equals(sMonth[i2]))
                    {   
                        tf=false;   
                    }   
                }   
                if(tf)   
                {   
                    //内容一样   
                    //除去当前单元格的内容   
                    DataGrid1.Items[i].Cells.RemoveAt(icolumn);   
                    j++;//下一行的单元格   
                    //判断是否到了最后一行   
                    if(i==DataGrid1.Items.Count-1&&j>1)   
                        DataGrid1.Items[t].Cells[icolumn].RowSpan=j;   
                }   
                else   
                {   
                    //内容不一样   
                    //判断是否需要合并单元格   
                    if(j>1)   
                    {   
                        //需要合并   
                        DataGrid1.Items[t].Cells[icolumn].RowSpan=j;   
                        j=1;   
                    }   
                    //本格的合并结束,重新赋值,继续下一个单元格的处理   
                    t=i;   
                    for(int   i2=0;i2<=icolumn;i2++)   
                    {   
                        //初始化数组   
                        sMonth[i2]=DataGrid1.Items[i].Cells[i2].Text;   
                    }   
                }   
            }
        }
0 回复
1