Click here to Skip to main content
Licence 
First Posted 20 Dec 2006
Views 15,249
Bookmarked 15 times

a cool and universal asp.net datagrid merger

By | 20 Dec 2006 | Article
a cool and universal asp.net datagrid merger, you can merge multi-headers and datagrid body

Sample Image - GridMerger.gif

Introduction

 It is a cool asp.net DataGrid Merger, it is very simple and useful.

 Only use a few code, you can merge datagrid's Header and body.

 I hope it is helpful  to you!    

Using the code  

 protected void Page_Load(object sender, EventArgs e) 
 { 
  DataTable dt = new DataTable(); 
  AddTableColumn(dt, "f1", null); 
  AddTableColumn(dt, "f2", "income|f2"); 
  AddTableColumn(dt, "f3", "income|f3"); 
  AddTableColumn(dt, "f4", "income|Last Year|f4");
  AddTableColumn(dt, "f5", "income|Last Year|f5"); 
  AddTableColumn(dt, "f6", null); 
  AddTableColumn(dt, "f7", "outcome|f7");
  AddTableColumn(dt, "f8", "outcome|f9");
  for (int r = 1; r <= 6; r++) 
  {
    DataRow dr = dt.NewRow(); 
    dr["f1"] = "" + (r / 4); 
    dr["f2"] = "" + (r / 2);
    for (int col = 3; col <= dt.Columns.Count; col++) 
      dr["f" + col] = "" + (col*r); 
      dt.Rows.Add(dr); 
  }   
  DataGrid1.DataSource = dt; 
  foreach (DataColumn dataColumn in dt.Columns)
  {
     BoundColumn column = new BoundColumn();
     column.DataField = dataColumn.ColumnName; 
     column.HeaderText = dataColumn.Caption == null ? dataColumn.ColumnName : dataColumn.Caption; 
     DataGrid1.Columns.Add(column); 
  } 
  
  DfawWeb.CtrlUtil.DataGridMerger merger = new DfawWeb.CtrlUtil.DataGridMerger(DataGrid1);
    merger.AddMergeColumn("f2"); //  
    merger.AddMergeColumn("f1"); //   
  DataBind(); 
}
public interface IMatrix 
{ 
  int RowCount { get; } 
  int ColumnCount { get; } 
  object GetCellValue(int row, int col);
}

 public class MergeCell
 { 
   public System.Drawing.Rectangle Bounds; 
   public object Value; // &#20540; 
 } 

 public class MergeCellList : CollectionBase 
 { 
  public enum MergeModeEnum 
  {
    RowCol = 0,
    Col,
    Row 
  }
  ...
}
void dataGrid_ItemCreated(object sender, DataGridItemEventArgs e)
        {
            if (ListItemType.Item == e.Item.ItemType || ListItemType.AlternatingItem == e.Item.ItemType)
            {
                if (canMergColHash != null && canMergColHash.Count > 0)  //&#21512;&#24182;&#34920;&#20307;
                    e.Item.SetRenderMethodDelegate(new RenderMethod(BodyMergeRenderMethod));
                return;
            }
            if (cellList != null && ListItemType.Header == e.Item.ItemType)  // &#21512;&#24182;&#34920;&#22836;
                e.Item.SetRenderMethodDelegate(new RenderMethod(HeaderMergeRenderMethod));
        }

Points of Interest

  more know, please Visit: http://www.longxsoft.com/

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Wangyim

Web Developer

China China

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
QuestionWhat is EasyReport? PinmemberPrasad Khandekar23:30 21 Dec '06  
AnswerRe: What is EasyReport? PinmemberWangyim19:57 22 Dec '06  
GeneralYou are so cool :) PinmemberYU-TIEN18:42 21 Dec '06  
GeneralRe: You are so cool :) PinmemberWangyim21:56 21 Dec '06  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web04 | 2.5.120517.1 | Last Updated 21 Dec 2006
Article Copyright 2006 by Wangyim
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid