Click here to Skip to main content
Licence 
First Posted 21 Sep 2003
Views 185,589
Bookmarked 47 times

Displaying vertical rows in a DataGrid

By | 21 Sep 2003 | Article
Displaying vertical rows in a datagrid by flipping the tables horizontally

Introduction

Last week, when I wanted to display a DataGrid in a horizontal manner (vertical rows), I thought there may be some property in DataGrid to flip it, but it wasn’t the case or may be I couldn’t find it. I read online articles and forums but didn’t get very useful or easy solutions. One of the solutions I found was to nest a DataList into a DataSet but I didn’t find this easy; and the other was all together a new control called xrepeater but I found mine easier than the two of them.

Let’s say you have a dataset which you want to render through a datagrid but you don’t want to show horizontal rows, instead you want to show the rows vertically. There may be lot of cases when you want to do that, for example comparison between two things on several criteria (Column headings) or when you have just one or two rows to show then you would prefer the vertical rows for more clarity. Here is how the idea of flipping the table comes in.

The idea is to flip all the entries inside each table of the dataset. This is not a very good solution but it works fine. I wrote a method which takes a DataSet as a parameter and returns a new DataSet with all tables flipped and now you just have to bind this DataSet’s tables to the DataGrid as you do normally and DataGrid renders vertical rows.

Old DataSet

Old Table looks like below.

Column1 Column2 Column3
Neeraj Jain Carios
Tashan Yen Agknow
Andrew Ferriere Feedback

Flipped DataSet

New DataTable looks like this

0 1 2 3
Column1 Neeraj Tashan Andrew
Column2 Jain Yen Agknow
Column3 Carios Agknow Feedback

Please note that in flipped table there are column headings as integer numbers, so when bind you it to the datagrid, and set the property ShowHeader=false; you are all set to render the vertical dataRows properly.

Code

Here is the code for FlipDataSet method, is in the code behind file for me. In method FlipDataSet, I am doing flipping of dataset and in BindData, I am binding the first table of it to the DataGrid. This is all:

private void BindData()
{
    DataSet ds = this.GetDetail(); // Some DataSet
    DataSet new_ds = FlipDataSet(ds); // Flip the DataSet
    DataView my_DataView = new_ds.Tables[0].DefaultView;
    this.my_DataGrid.DataSource = my_DataView;
    this.my_DataGrid.DataBind();
}


public DataSet FlipDataSet(DataSet my_DataSet)
{
    DataSet ds = new DataSet();
    foreach(DataTable dt in my_DataSet.Tables)
    {
        DataTable table = new DataTable();
        for(int i=0; i<=dt.Rows.Count; i++)
        {
            table.Columns.Add(Convert.ToString(i));
        }
        DataRow r;
        for(int k=0; k<dt.Columns.Count; k++)
        {
            r = table.NewRow();
            r[0] = dt.Columns[k].ToString();
            for(int j=1; j<=dt.Rows.Count; j++)
                r[j] = dt.Rows[j-1][k];
        }
        table.Rows.Add(r);
    }
    ds.Tables.Add(table);
}
return ds;
}

Conclusion

Thanks for reading and please send any questions or comments you may have (I am sure you will).

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

Neeraj Jain

Web Developer

United States United States

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
GeneralNot working for me Pinmember_drifter11:40 19 Jan '11  
GeneralRemoving Column names. Pinmembersrikantha_nagaraj20:02 9 Aug '09  
Questionhow can i modify the columnheader name 0 1 2 3 column? Pinmemberrkhiev10:50 22 Sep '08  
QuestionHow we can perform Update on this transposed grid Pinmembermsaqu20:25 2 Aug '08  
GeneralThis Article very Good PinmemberR4Ravi Kumar1:48 25 Feb '08  
GeneralGreat Pinmembernaveenj22:34 3 Jan '08  
GeneralSame thing Different approach! Pinmemberhengrr13:52 21 Aug '07  
GeneralDemo Project in C#.NET 2005 PinmemberM. Gamal3:06 23 Jun '07  
GeneralThank you PinmemberBaroon18:27 10 Mar '07  
GeneralEdited : Added Headerstyle, ItemStyle, and AlternatingStyles to columns [modified] Pinmemberbeyerch210:24 2 Aug '06  
QuestionRotate with nonString field PinmemberKonstantin_STD2:23 24 Jul '06  
GeneralColumn Paging on this datagrid [modified] Pinmembervaishika13:49 23 Jun '06  
GeneralGridView instead of DataGrid Pinmemberyaip13:40 19 Jun '06  
Generalcorrected code PinmemberZoneTrader12:46 17 Apr '06  
GeneralShort and sweet - Nice PinmemberJorge Da Silva8:38 7 Feb '06  
GeneralU need to alter one { curly brace Pinmembercinni18:54 10 Jan '06  
QuestionHow do you format a column? Pinmemberramsay_s6:51 29 Nov '05  
GeneralNice job there! Pinmemberalkisman21:38 4 Sep '05  
GeneralVB Port Pinmemberbrad_morga3:58 18 May '05  
QuestionRe: VB Port PinmemberMember 436544320:19 17 Aug '08  
GeneralRe: VB Port PinmemberThe Developer20:29 19 Aug '08  
GeneralRe:Displaying vertical rows in a DataGrid PinsussAmr EL-Nasser3:51 29 Mar '05  
GeneralPush button,hyperlink or image button Pinmemberamit__81:49 5 Feb '05  
GeneralRe: Push button,hyperlink or image button Pinmembermailtoanzar18:19 11 Feb '05  
QuestionDid anyone got the .NEt Version working?? Pinmember4netvb6:07 27 Jan '05  

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 22 Sep 2003
Article Copyright 2003 by Neeraj Jain
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid