Click here to Skip to main content
Licence 
First Posted 30 Jul 2006
Views 57,657
Bookmarked 21 times

Multi Header Grid view

By | 30 Jul 2006 | Article
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(); 
/// <summary>
    /// Gets my multi header.
    /// </summary>
    /// <param name="e">The <see cref="T:System.Web.UI.WebControls.GridViewRowEventArgs"/> instance containing the event data.</param>
    /// <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 
    ///  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</param>
    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>/// <summary></P>
<P>    /// Handles the RowDataBound event of the GridViewData control.</P>
<P>    /// </summary></P>
<P>    /// <param name="sender">The source of the event.</param></P>
<P>    /// <param name="e">The <see cref="T:System.Web.UI.WebControls.GridViewRowEventArgs"/> instance containing the event data.</param></P>

<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

About the Author

ZeroDev

Chief Technology Officer

Jordan Jordan

Member

Life is really simple, but we insist on making it complicated

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
GeneralThank You PinmemberMember 44203724:52 3 Sep '09  
GeneralProblem with Multi Header Pinmemberkamal kishor3:34 30 Apr '09  
GeneralThanks Pinmemberyokitocain19:51 29 Aug '08  
GeneralSample Layout PinmemberWyatt Wong0:28 5 May '08  
GeneralUse RowCreated instead of RowDataBound event PinmemberMichael Freidgeim1:01 6 Mar '08  
QuestionA posible Error... PinmemberShunete.1:34 12 Sep '07  
AnswerRe: A posible Error... PinmemberZeroDev1:55 12 Sep '07  
GeneralRe: A posible Error... PinmemberShunete.2:56 12 Sep '07  
GeneralRe: A posible Error... PinmemberZeroDev3:07 12 Sep '07  
GeneralRe: A posible Error... PinmemberShunete.3:37 12 Sep '07  
GeneralRe: A posible Error... PinmemberZeroDev4:01 12 Sep '07  
GeneralRe: A posible Error... PinmemberShunete.4:18 12 Sep '07  
GeneralRe: A posible Error... PinmemberZeroDev4:31 12 Sep '07  
GeneralRe: A posible Error... PinmemberShunete.4:47 12 Sep '07  
GeneralSolved my problem Pinmemberpauloya0:37 12 Sep '07  
GeneralGood Work Pinmembermyabhi300:17 28 Aug '07  
GeneralRe: Good Work PinmemberZeroDev3:03 28 Aug '07  
GeneralTHANK YOU PinmemberJeromeDeCuyper15:11 20 Feb '07  
GeneralRe: THANK YOU PinmemberZeroDev21:39 13 Mar '07  

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
Web02 | 2.5.120517.1 | Last Updated 30 Jul 2006
Article Copyright 2006 by ZeroDev
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid