GridView多表头类

 

http://blog.csdn.net/mengyao/

ContractedBlock.gif ExpandedBlockStart.gif Code


 

以上列表中运用的都是基本的东东:

1.多表头;

2.按值改变行颜色;

3.分页码

 

代码:

AndyGridViewTHeaderHepler.cs

//----------------------------------------------------------------------------------- 
// 
//  Created: 23:07 2008/9/28    Author:  Andy Lu 
//  File: AndyGridViewTHeaderHepler.cs 
//  Description: 动态生成复合表头帮助类 
//  相邻父列头之间用'#'分隔,父列头与子列头用空格(' ')分隔,相邻子列头用逗号分隔(','). 
//  两行:序号#分公司#组别#本日成功签约单数 预警,续约,流失,合计#累计成功签约单数 预警,续约,流失,合计#任务数#完成比例#排名 
//  三行:等级#级别#上期结存 件数,重量,比例#本期调入 收购调入 件数,重量,比例#本期发出 车间投料 件数,重量,比例#本期发出 产品外销百分比 件数,重量,比例#平均值 
//  三行时请注意:列头要重复 
// 
//----------------------------------------------------------------------------------- 
using System; 
using System.Data; 
using System.Configuration; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using System.Collections.Generic; 
using System.Collections; 

namespace SQLServerDAL 

    
public class AndyGridViewTHeaderHepler 
    { 
        
public AndyGridViewTHeaderHepler() 
        { 
            
// 
            
// TODO: Add constructor logic here 
            
// 
        } 
        
/**//// <summary> 
        
/// 重写表头 
        
/// </summary> 
        
/// <param name="targetHeader">目标表头</param> 
        
/// <param name="newHeaderNames">新表头</param> 
        
/// <remarks> 
        
/// </remarks> 
        public void SplitTableHeader(GridViewRow targetHeader, string newHeaderNames) 
        { 
            TableCellCollection tcl 
= targetHeader.Cells;//获得表头元素的实例 
            tcl.Clear();//清除元素 
            int row = GetRowCount(newHeaderNames); 
            
int col = GetColCount(newHeaderNames); 
            
string[,] nameList = ConvertList(newHeaderNames,row,col); 
            
int RowSpan = 0
            
int ColSpan = 0
            
for (int k = 0; k < row; k++
            { 
                
string LastFName = ""
                
for (int i = 0; i < col; i++
                { 
                    
if (LastFName == nameList[i, k] && k!=row-1
                    { 
                        LastFName 
= nameList[i, k]; 
                        
continue
                    } 
                    
else 
                    { 
                        LastFName 
= nameList[i, k]; 
                    } 
                    
int bFlag=IsVisible(nameList, k, i, LastFName); 
                    
switch (bFlag) 
                    { 
                        
case 0
                            
break
                        
case 1
                            RowSpan 
= GetSpanRowCount(nameList,row, k, i); 
                            ColSpan 
= GetSpanColCount(nameList,row,col, k, i); 
                            tcl.Add(
new TableHeaderCell());//添加表头控件 
                            tcl[tcl.Count - 1].RowSpan = RowSpan; 
                            tcl[tcl.Count 
- 1].ColumnSpan = ColSpan; 
                            tcl[tcl.Count 
- 1].HorizontalAlign = HorizontalAlign.Center; 
                            tcl[tcl.Count 
- 1].Text = LastFName; 
                            
break
                        
case -1
                            
string[] EndColName = LastFName.Split(new char[] { ',' }); 
                            
foreach(string eName in EndColName){ 
                                tcl.Add(
new TableHeaderCell());//添加表头控件 
                                tcl[tcl.Count - 1].HorizontalAlign = HorizontalAlign.Center; 
                                tcl[tcl.Count 
- 1].Text = eName; 
                            } 
                            
break
                    } 
                } 
                
if (k != row-1
                {
//不是起始行,加入新行标签 
                    tcl[tcl.Count - 1].Text = tcl[tcl.Count - 1].Text+"</th></tr><tr class="+targetHeader.CssClass+">"
                } 
            } 
        } 
        
/**//// <summary> 
        
/// 如果上一行已经输出和当前内容相同的列头,则不显示 
        
/// </summary> 
        
/// <param name="ColumnList">表头集合</param> 
        
/// <param name="rowIndex">行索引</param> 
        
/// <param name="colIndex">列索引</param> 
        
/// <returns>1:显示,-1:含','分隔符,0:不显示</returns> 
        private int IsVisible(string[,] ColumnList,int rowIndex, int colIndex,string CurrName) 
        { 
            
if (rowIndex!=0){ 
                
if (ColumnList[colIndex,rowIndex-1]==CurrName){ 
                    
return 0
                }
else
                    
if (ColumnList[colIndex, rowIndex].Contains(",")) 
                    { 
                        
return -1
                    }
else
                        
return 1
                    } 
                } 
            } 
            
return 1
        } 
        
/**//// <summary> 
        
/// 取得和当前索引行及列对应的下级的内容所跨的行数 
        
/// </summary> 
        
/// <param name="ColumnList">表头集合</param> 
        
/// <param name="row">行数</param> 
        
/// <param name="rowIndex">行索引</param> 
        
/// <param name="colIndex">列索引</param> 
        
/// <returns>行数</returns> 
        private int GetSpanRowCount(string[,] ColumnList, int row,int rowIndex, int colIndex) 
        { 
            
string LastName = ""
            
int RowSpan = 1
            
for (int k = rowIndex; k < row; k++
            { 
                
if (ColumnList[colIndex,k]==LastName){ 
                    RowSpan
++
                }
else
                    LastName 
= ColumnList[colIndex, k]; 
                } 
            } 
            
return RowSpan; 
        } 
        
/**//// <summary> 
        
/// 取得和当前索引行及列对应的下级的内容所跨的列数 
        
/// </summary> 
        
/// <param name="ColumnList">表头集合</param> 
        
/// <param name="row">行数</param> 
        
/// <param name="col">列数</param> 
        
/// <param name="rowIndex">行索引</param> 
        
/// <param name="colIndex">列索引</param> 
        
/// <returns>列数</returns> 
        private int GetSpanColCount(string[,] ColumnList,int row, int col,int rowIndex, int colIndex) 
        { 
            
string LastName = ColumnList[colIndex, rowIndex] ; 
            
int ColSpan = ColumnList[colIndex, row-1].Split(new char[] { ',' }).Length; 
            ColSpan 
= ColSpan == 1 ? 0 : ColSpan; 
            
for(int i=colIndex+1;i<col;i++
            { 
                
if (ColumnList[i, rowIndex] == LastName) 
                { 
                    ColSpan 
+= ColumnList[i, row - 1].Split(new char[] { ',' }).Length; 
                } 
                
else 
                { 
                    LastName 
= ColumnList[i, rowIndex]; 
                    
break
                } 
            } 
            
return ColSpan; 
        } 
        
/**//// <summary> 
        
/// 将已定义的表头保存到数组 
        
/// </summary> 
        
/// <param name="newHeaders">新表头</param> 
        
/// <param name="row">行数</param> 
        
/// <param name="col">列数</param> 
        
/// <returns>表头数组</returns> 
        private string[,] ConvertList(string newHeaders, int row, int col) 
        { 
            
string[] ColumnNames = newHeaders.Split(new char[] {'#'}); 
            
string[,] news = new string[col, row]; 
            
string Name = ""
            
for (int i = 0; i < col; i++
            { 
                
string[] CurrColNames = ColumnNames[i].ToString().Split(new char[] { ' ' }); 
                
for (int k = 0; k < row; k++
                { 
                    
if (CurrColNames.Length - 1 >= k) 
                    { 
                        
if (CurrColNames[k].Contains(",")) 
                        { 
                            
if (CurrColNames.Length != row) 
                            { 
                                
if (Name == ""
                                { 
                                    news[i, k] 
= news[i, k - 1]; 
                                    Name 
= CurrColNames[k].ToString(); 
                                } 
                                
else 
                                { 
                                    news[i, k 
+ 1= Name; 
                                    Name 
= ""
                                } 
                            }
else
                                news[i, k] 
= CurrColNames[k].ToString(); 
                            } 
                        }
else
                            news[i, k] 
= CurrColNames[k].ToString(); 
                        } 
                    }
else
                        
if (Name == ""
                        { 
                            news[i, k] 
= news[i, k - 1]; 
                        }
else
                            news[i, k] 
= Name; 
                            Name 
= ""
                        } 
                    } 
                } 
            } 
            
return news; 
        } 
        
/**//// <summary> 
        
/// 取得复合表头的行数 
        
/// </summary> 
        
/// <param name="newHeaders">新表头</param> 
        
/// <returns>行数</returns> 
        private int GetRowCount(string newHeaders) 
        { 
            
string[] ColumnNames = newHeaders.Split(new char[] { '#' }); 
            
int Count = 0
            
foreach(string name in ColumnNames){ 
                
int TempCount = name.Split(new char[] { ' ' }).Length; 
                
if (TempCount > Count) 
                    Count 
= TempCount; 
            } 
            
return Count; 
        } 
        
/**//// <summary> 
        
/// 取得复合表头的列数 
        
/// </summary> 
        
/// <param name="newHeaders">新表头</param> 
        
/// <returns>列数</returns> 
        private int GetColCount(string newHeaders) 
        { 
            
return newHeaders.Split(new char[] { '#' }).Length; 
        } 
        
    } 
}
 

运用时代码如下:

 

            
if (e.Row.RowType == DataControlRowType.Header) 
            { 


                SQLServerDAL.AndyGridViewTHeaderHepler dHelper 
= new SQLServerDAL.AndyGridViewTHeaderHepler(); 

                
string header = "序号#分公司#组别#本日成功签约单数 预警,续约,流失,合计#累计成功签约单数 预警,续约,流失,合计#任务数#完成比例#排名"

                
//--------------------------------------------------------------------------------------- 
                
// Andy Lu 19:21 2008/10/6 **电信社区宽带揽装业务发展竞赛龙虎榜  
                
// 加载 gridview Header 的样式 
                
//--------------------------------------------------------------------------------------- 
                e.Row.CssClass = GridView1.HeaderStyle.CssClass;  

                dHelper.SplitTableHeader(e.Row, header); 


             }

转载于:https://www.cnblogs.com/jianlinglo/archive/2009/05/15/1457513.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
基于hal库的OLED显示屏驱动C语言实现源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值