Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Datagrid Control > Two column header rows possible?

Reply
Thread Tools

Two column header rows possible?

 
 
Bill Musgrave
Guest
Posts: n/a
 
      12-13-2004
We are currently creating output displaying 'Total' and 'Avg' information.
Is it possible to add a row above, spanning multiple columns similar to
this?:

| Widgets |
+----------------+
| Total | Avg |

Thanks
Bill


 
Reply With Quote
 
 
 
 
Eliyahu Goldin
Guest
Posts: n/a
 
      12-14-2004
It is not supported directly, but I can think of faking it by inserting
another data row with subheaders into the data table. You can format in a
special way making it look differently from data items. You can use
PreRender event for formatting.

Eliyahu

"Bill Musgrave" <> wrote in message
news:%...
> We are currently creating output displaying 'Total' and 'Avg' information.
> Is it possible to add a row above, spanning multiple columns similar to
> this?:
>
> | Widgets |
> +----------------+
> | Total | Avg |
>
> Thanks
> Bill
>
>



 
Reply With Quote
 
 
 
 
Bill Musgrave
Guest
Posts: n/a
 
      12-14-2004
Thanks Eiliyahu, though I am not sure I understand.

When you said data row, did you mean add another datagridcontrol? If so how
do we get all the columns to align?

If not, maybe you can elaborate (any code would be helpful).

Also, would there be a way to do this utilizing the templatecolumn?

Thanks again.
Bill


"Eliyahu Goldin" <> wrote in message
news:...
> It is not supported directly, but I can think of faking it by inserting
> another data row with subheaders into the data table. You can format in a
> special way making it look differently from data items. You can use
> PreRender event for formatting.
>
> Eliyahu
>
> "Bill Musgrave" <> wrote in message
> news:%...
> > We are currently creating output displaying 'Total' and 'Avg'

information.
> > Is it possible to add a row above, spanning multiple columns similar to
> > this?:
> >
> > | Widgets |
> > +----------------+
> > | Total | Avg |
> >
> > Thanks
> > Bill
> >
> >

>
>



 
Reply With Quote
 
Ken Cox [Microsoft MVP]
Guest
Posts: n/a
 
      12-15-2004
Hi Bill,

Below, I've pasted in some code that should help you create headers that
span. It is a little finicky but can be done. See the code comments for
details.

Let us know if this helps?

Ken
Microsoft MVP [ASP.NET]
Toronto


<aspataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False"
ShowHeader="False">
<Columns>
<asp:BoundColumn DataField="Subject"></asp:BoundColumn>
<asp:BoundColumn DataField="Day"></asp:BoundColumn>
</Columns>
</aspataGrid>


Dim dt As DataTable
Private Sub Page_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
DataGrid1.ShowHeader = True
DataGrid1.DataSource = CreateDataSource()
DataGrid1.DataBind()
End Sub
Private Sub DataGrid1_ItemDataBound _
(ByVal sender As Object, _
ByVal e As _
System.Web.UI.WebControls.DataGridItemEventArgs) _
Handles DataGrid1.ItemDataBound
' Add a second header with a flag button in it
' by Ken Cox Microsoft MVP [ASP.NET]
If e.Item.ItemType = ListItemType.Header Then
' Get the collection of cells from the grid
Dim tcells As TableCellCollection
' Create an imagebutton
Dim imgBtn As New ImageButton
' Assign the URL
imgBtn.ImageUrl = "http://www.gc.ca/images/flag.gif"
' Get the collection of existing cells so we can get a count
tcells = e.Item.Cells
' Create a new cell
Dim fcell As New TableCell
' Add the image button to the new table cell
fcell.Controls.Add(imgBtn)
' Span the cell to however many columns there are
fcell.ColumnSpan = tcells.Count
' Create a new header object
Dim dgItemHeader As New DataGridItem _
(0, 0, ListItemType.Header)
' Add the cell to the header
dgItemHeader.Cells.Add(fcell)
dgItemHeader.Visible = True
' Add the header to the datagrid
DataGrid1.Controls(0).Controls.Add(dgItemHeader)
End If
End Sub
Function CreateDataSource() As ICollection
' Create sample data for the DataList control.
dt = New DataTable
Dim dr As DataRow

' Define the columns of the table.
dt.Columns.Add(New DataColumn("Student", GetType(String)))
dt.Columns.Add(New DataColumn("Subject", GetType(String)))
dt.Columns.Add(New DataColumn("Day", GetType(String)))

' Populate the table with sample values.
dr = dt.NewRow
dr(0) = "Ben"
dr(1) = "English"
dr(2) = "Thursday"
dt.Rows.Add(dr)
dr = dt.NewRow
dr(0) = "Ben"
dr(1) = "Geology"
dr(2) = "Monday"
dt.Rows.Add(dr)
dr = dt.NewRow
dr(0) = "Ben"
dr(1) = "Physics"
dr(2) = "Tuesday"
dt.Rows.Add(dr)
Dim dv As DataView = New DataView(dt)
Return dv
End Function

"Bill Musgrave" <> wrote in message
news:%...
> We are currently creating output displaying 'Total' and 'Avg' information.
> Is it possible to add a row above, spanning multiple columns similar to
> this?:
>
> | Widgets |
> +----------------+
> | Total | Avg |
>
> Thanks
> Bill
>
>


 
Reply With Quote
 
Eliyahu Goldin
Guest
Posts: n/a
 
      12-15-2004
Bill,

I mean adding another data row to the data table. When you bind the grid to
the table, the row should be rendered straight after the header.

Yes, template columns can be used. You can prepare HTML in ItemTemplate for
both subheader and normal data and, in ItemDataBound event, check on the
very first data row. If an item is the very first data row, populate HTML
for subheaders.

Eliyahu

"Bill Musgrave" <> wrote in message
news:...
> Thanks Eiliyahu, though I am not sure I understand.
>
> When you said data row, did you mean add another datagridcontrol? If so

how
> do we get all the columns to align?
>
> If not, maybe you can elaborate (any code would be helpful).
>
> Also, would there be a way to do this utilizing the templatecolumn?
>
> Thanks again.
> Bill
>
>
> "Eliyahu Goldin" <> wrote in message
> news:...
> > It is not supported directly, but I can think of faking it by inserting
> > another data row with subheaders into the data table. You can format in

a
> > special way making it look differently from data items. You can use
> > PreRender event for formatting.
> >
> > Eliyahu
> >
> > "Bill Musgrave" <> wrote in message
> > news:%...
> > > We are currently creating output displaying 'Total' and 'Avg'

> information.
> > > Is it possible to add a row above, spanning multiple columns similar

to
> > > this?:
> > >
> > > | Widgets |
> > > +----------------+
> > > | Total | Avg |
> > >
> > > Thanks
> > > Bill
> > >
> > >

> >
> >

>
>



 
Reply With Quote
 
Bill Musgrave
Guest
Posts: n/a
 
      12-23-2004
Ken thanks for your response, it helped tons.

Merry Christmas
Bill

"Ken Cox [Microsoft MVP]" <> wrote in message
news:...
> Hi Bill,
>
> Below, I've pasted in some code that should help you create headers that
> span. It is a little finicky but can be done. See the code comments for
> details.
>
> Let us know if this helps?
>
> Ken
> Microsoft MVP [ASP.NET]
> Toronto
>
>
> <aspataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False"
> ShowHeader="False">
> <Columns>
> <asp:BoundColumn DataField="Subject"></asp:BoundColumn>
> <asp:BoundColumn DataField="Day"></asp:BoundColumn>
> </Columns>
> </aspataGrid>
>
>
> Dim dt As DataTable
> Private Sub Page_Load _
> (ByVal sender As System.Object, _
> ByVal e As System.EventArgs) _
> Handles MyBase.Load
> DataGrid1.ShowHeader = True
> DataGrid1.DataSource = CreateDataSource()
> DataGrid1.DataBind()
> End Sub
> Private Sub DataGrid1_ItemDataBound _
> (ByVal sender As Object, _
> ByVal e As _
> System.Web.UI.WebControls.DataGridItemEventArgs) _
> Handles DataGrid1.ItemDataBound
> ' Add a second header with a flag button in it
> ' by Ken Cox Microsoft MVP [ASP.NET]
> If e.Item.ItemType = ListItemType.Header Then
> ' Get the collection of cells from the grid
> Dim tcells As TableCellCollection
> ' Create an imagebutton
> Dim imgBtn As New ImageButton
> ' Assign the URL
> imgBtn.ImageUrl = "http://www.gc.ca/images/flag.gif"
> ' Get the collection of existing cells so we can get a count
> tcells = e.Item.Cells
> ' Create a new cell
> Dim fcell As New TableCell
> ' Add the image button to the new table cell
> fcell.Controls.Add(imgBtn)
> ' Span the cell to however many columns there are
> fcell.ColumnSpan = tcells.Count
> ' Create a new header object
> Dim dgItemHeader As New DataGridItem _
> (0, 0, ListItemType.Header)
> ' Add the cell to the header
> dgItemHeader.Cells.Add(fcell)
> dgItemHeader.Visible = True
> ' Add the header to the datagrid
> DataGrid1.Controls(0).Controls.Add(dgItemHeader)
> End If
> End Sub
> Function CreateDataSource() As ICollection
> ' Create sample data for the DataList control.
> dt = New DataTable
> Dim dr As DataRow
>
> ' Define the columns of the table.
> dt.Columns.Add(New DataColumn("Student", GetType(String)))
> dt.Columns.Add(New DataColumn("Subject", GetType(String)))
> dt.Columns.Add(New DataColumn("Day", GetType(String)))
>
> ' Populate the table with sample values.
> dr = dt.NewRow
> dr(0) = "Ben"
> dr(1) = "English"
> dr(2) = "Thursday"
> dt.Rows.Add(dr)
> dr = dt.NewRow
> dr(0) = "Ben"
> dr(1) = "Geology"
> dr(2) = "Monday"
> dt.Rows.Add(dr)
> dr = dt.NewRow
> dr(0) = "Ben"
> dr(1) = "Physics"
> dr(2) = "Tuesday"
> dt.Rows.Add(dr)
> Dim dv As DataView = New DataView(dt)
> Return dv
> End Function
>
> "Bill Musgrave" <> wrote in message
> news:%...
> > We are currently creating output displaying 'Total' and 'Avg'

information.
> > Is it possible to add a row above, spanning multiple columns similar to
> > this?:
> >
> > | Widgets |
> > +----------------+
> > | Total | Avg |
> >
> > Thanks
> > Bill
> >
> >

>



 
Reply With Quote
 
Bill Musgrave
Guest
Posts: n/a
 
      12-23-2004
Eilyahu

Thanks for your time, we were finally able to get things working.

Merry Christmas
Bill

"Eliyahu Goldin" <> wrote in message
news:...
> Bill,
>
> I mean adding another data row to the data table. When you bind the grid

to
> the table, the row should be rendered straight after the header.
>
> Yes, template columns can be used. You can prepare HTML in ItemTemplate

for
> both subheader and normal data and, in ItemDataBound event, check on the
> very first data row. If an item is the very first data row, populate HTML
> for subheaders.
>
> Eliyahu
>
> "Bill Musgrave" <> wrote in message
> news:...
> > Thanks Eiliyahu, though I am not sure I understand.
> >
> > When you said data row, did you mean add another datagridcontrol? If so

> how
> > do we get all the columns to align?
> >
> > If not, maybe you can elaborate (any code would be helpful).
> >
> > Also, would there be a way to do this utilizing the templatecolumn?
> >
> > Thanks again.
> > Bill
> >
> >
> > "Eliyahu Goldin" <> wrote in message
> > news:...
> > > It is not supported directly, but I can think of faking it by

inserting
> > > another data row with subheaders into the data table. You can format

in
> a
> > > special way making it look differently from data items. You can use
> > > PreRender event for formatting.
> > >
> > > Eliyahu
> > >
> > > "Bill Musgrave" <> wrote in message
> > > news:%...
> > > > We are currently creating output displaying 'Total' and 'Avg'

> > information.
> > > > Is it possible to add a row above, spanning multiple columns similar

> to
> > > > this?:
> > > >
> > > > | Widgets |
> > > > +----------------+
> > > > | Total | Avg |
> > > >
> > > > Thanks
> > > > Bill
> > > >
> > > >
> > >
> > >

> >
> >

>
>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Hide the Gridview Rows and Header rows in Button click VijayRama ASP .Net 2 10-12-2009 01:58 PM
Header files with "header.h" or <header.h> ?? mlt C++ 2 01-31-2009 02:54 PM
datagrid having row header and column header krishna.dwivedi@gmail.com ASP .Net Datagrid Control 0 07-13-2006 08:20 AM
Image in header column (not replacing column header text) hansiman ASP .Net Datagrid Control 3 02-07-2004 12:17 AM
Column span two rows? Bruce W...1 HTML 2 10-24-2003 09:42 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57