GridView-合并header与datarow单元格

实现效果:

IdFull NameDepart
1fname1lname1Sales
2fname2lname2
3fname3lname3
4fname4lname4
5fname5lname5
6fname6lname6IT
7fname7lname7
8fname8lname8
9fname9lname9
10fname10lname10

代码:
using  System;
using  System.Data;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Collections.Generic;

public   partial   class  _Default : System.Web.UI.Page 
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!IsPostBack) bindPersons();
    }



    
//绑定GridView
    protected void bindPersons()
    
{
        
this.GridView1.DataSource = getSource();
        
this.GridView1.DataBind();
    }


    
//创建数据源
    protected DataTable getSource()
    
{
        
/**//**-----------------------------------------
         *      Id  FisrtName   LastName    Depart
         * -----------------------------------------
         *       1   fname1       lname1     Sales
         *       1   fname2       lname2     IT
         * -----------------------------------------
         * 
*/

        DataTable persons 
= new DataTable();
        persons.Columns.Add(
"Id"typeof(System.Int32));
        persons.Columns.Add(
"FirstName"typeof(System.String));
        persons.Columns.Add(
"LastName"typeof(System.String));
        persons.Columns.Add(
"Depart"typeof(System.String));

        
for (int i = 0; i < 10; i++)
        
{
            DataRow row 
= persons.NewRow();
            row[
"Id"= i+1;
            row[
"FirstName"= "fname" + (i + 1);
            row[
"LastName"= "lname" + (i + 1);
            
if (i < 5)
                row[
"Depart"= "Sales";
            
else
                row[
"Depart"= "IT";
            persons.Rows.Add(row);
        }

        
return persons;
    }

    
    
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    
{//合并header的firstName和lastName列
        
        
if (e.Row.RowType == DataControlRowType.Header)
        
{
            
//删除lastName列
            e.Row.Cells.RemoveAt(2);
            
//合并列
            e.Row.Cells[1].Attributes["colspan"= "2";
            
//设置列标签
            e.Row.Cells[1].Text = "<font color=\"red\">Full Name</font>";
        }


    }


    
    
protected void GridView1_PreRender(object sender, EventArgs e)
    
{//合并datarow
        
        Dictionary
<string,List<GridViewRow>> rowList = new Dictionary<string,List<GridViewRow>>();
        
foreach (GridViewRow row in GridView1.Rows)
        
{
            
string departName = row.Cells[3].Text;
            
if (!rowList.ContainsKey(departName))
            
{
                rowList[departName] 
= new List<GridViewRow>();
            }

            rowList[departName].Add(row);
        }


        
foreach (KeyValuePair<string, List<GridViewRow>> departList in rowList)
        
{
            
int i = 0;
            
foreach (GridViewRow row in departList.Value)
            
{

                
if (i == 0)
                
{
                    row.Cells[
3].Attributes["rowspan"= departList.Value.Count.ToString();
                    row.Cells[
3].Attributes["valign"= "center";
                    i
++;
                }

                
else
                
{
                    row.Cells.RemoveAt(
3);
                }

            }

        }


    }

}


下载: 文件

转载于:https://www.cnblogs.com/oiea/archive/2008/01/28/1055842.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值