Click here to Skip to main content
Click here to Skip to main content
Go to top

Multi Header Grid view

, 30 Jul 2006
Rate this:
Please Sign up or sign in to vote.
I have been looking for a way to add headers to a grid view and to be able to re use this code this code snippet could help adding the headers to grid view
I have been looking for a way to add headers to a grid view and to be able to re use this code this code snippet could help adding the headers to grid view

The Method that Dose the work:

Demo solution Downlod Download sourcecode

Description:

Gridview comes with a header for each column, you can't have an extra header to your Gridview, we can use the caption to some HTML tags and start building the extra headers, for me I did not like this solution, and came up with this code snippet

This method checks if the row of type header r then adds a row to the Gridview of type header by creating an object of type GridViewRow :

 row = new GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal);

to add the celss I Declaird an IDictionaryEnumerator that will count the cells passed by a sorted list , then within the sorted list I creat an arry of strings that ill be used to set the cells properties , an d last adding the Cells to the row

IDictionaryEnumerator enumCels = GetCels.GetEnumerator(); 
/// <span class="code-SummaryComment"><summary>
</span>
    /// Gets my multi header.
    /// <span class="code-SummaryComment"></summary>
</span>
    /// <span class="code-SummaryComment"><param name="e">The <see cref="T:System.Web.UI.WebControls.GridViewRowEventArgs"/> instance containing the event data.</param>
</span>
    /// <span class="code-SummaryComment"><param name="GetCels">The get cels. is sorted list that contain the cells the key is the position of the cell and the valu is a comma delemeted 
</span>
    ///  data to hold the cell information , index 0 is for the Content of the cell m index 1 is the coms span , index 2 is the row span 
    ///  pleas dont leav the colmn span and rowspan empty<span class="code-SummaryComment"></param>
</span>
    public void GetMyMultiHeader(GridViewRowEventArgs e, SortedList GetCels)
    {
        if (e.Row.RowType == DataControlRowType.Header)
        {<P>GridViewRow row;
<P>            IDictionaryEnumerator enumCels = GetCels.GetEnumerator();
<PRE class=MsoNormal style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none">          

            row = new GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal);

while (enumCels.MoveNext())

{

string[] cont = enumCels.Value.ToString().Split(Convert.ToChar(","));

TableCell Cell;

Cell = new TableCell();

Cell.RowSpan = Convert.ToInt16(cont[2].ToString());

Cell.ColumnSpan = Convert.ToInt16(cont[1].ToString());

Cell.Controls.Add(new LiteralControl(cont[0].ToString()));

Cell.HorizontalAlign = HorizontalAlign.Center;

Cell.ForeColor = System.Drawing.Color.White;

row.Cells.Add(Cell);

}

e.Row.Parent.Controls.AddAt(0, row);

        }

   }

How to use the methode we have to use a sorted list as so

the key of the sorted list is the cell position , and the contetn of the

sell is the valu with a comma delemeted the first index is the text , the next index is the colmn span , and the 3ed index is the row span

like this example

 <P>/// <span class="code-SummaryComment"><summary></P>
</span><P>    /// Handles the RowDataBound event of the GridViewData control.</P>
<P>    /// <span class="code-SummaryComment"></summary></P>
</span><P>    /// <span class="code-SummaryComment"><param name="sender">The source of the event.</param></P>
</span><P>    /// <span class="code-SummaryComment"><param name="e">The <see cref="T:System.Web.UI.WebControls.GridViewRowEventArgs"/> instance containing the event data.</param></P>
</span>
<P>protected void GridViewData_RowDataBound(object sender, GridViewRowEventArgs e)</P>
<P>    {</P>



<P>        SortedList creatCels = new SortedList();</P>
<P>        creatCels.Add("1", ",5,2");</P>
<P>        creatCels.Add("2", "Comments,4,1");</P>
<P>        creatCels.Add("3", ",1,2");</P>

<P>        SortedList creatCels2 = new SortedList();</P>
<P>        creatCels2.Add("1", "Total Amount of,2,1");</P>
<P>        creatCels2.Add("2", "Total Amount of,2,1");</P>


<P>        GetMyMultiHeader(e, creatCels2);</P>
<P>        GetMyMultiHeader(e, creatCels);</P>
    }

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

Share

About the Author

ZeroDev
Chief Technology Officer
Jordan Jordan
Life is really simple, but we insist on making it complicated

You may also be interested in...

Comments and Discussions

 
GeneralIt's a great idea PinmemberLechu8123-Aug-12 11:31 
GeneralRe: It's a great idea PinmemberZeroDev23-Aug-12 12:37 
BugRe: It's a great idea PinmemberLechu8127-Aug-12 9:04 
GeneralRe: It's a great idea PinmemberZeroDev27-Aug-12 10:40 
GeneralRe: It's a great idea PinmemberLechu8127-Aug-12 10:52 
GeneralRe: It's a great idea PinmemberLechu8127-Aug-12 11:00 
GeneralRe: It's a great idea Pinmemberbsshowriraju000122-Nov-12 18:03 
GeneralThank You PinmemberMember 44203723-Sep-09 4:52 
GeneralProblem with Multi Header Pinmemberkamal kishor30-Apr-09 3:34 
GeneralThanks Pinmemberyokitocain29-Aug-08 19:51 

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.

| Advertise | Privacy | Mobile
Web03 | 2.8.140926.1 | Last Updated 30 Jul 2006
Article Copyright 2006 by ZeroDev
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid