Thursday, May 5, 2011

Can I Merge Footer in GridView?

I have a GridView that is bound with a dataset. I have my footer, whichis separated by the column lines. I want to merge 2 columns; how do I do that?

<asp:TemplateField HeaderText="Name" SortExpression="Name">
<ItemTemplate>
...  
</ItemTemplate>
<FooterTemplate >                    
Grand Total:
</div>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Age" SortExpression="Age">
<ItemTemplate>
...  
</ItemTemplate>
<FooterTemplate >                    
<%# GetTotal() %> 
</div>
</FooterTemplate>
</asp:TemplateField>
From stackoverflow
  • You're looking for a ColumnSpan...

  • untested code

    1st footer template should include <%# GetTotal() %>

    2nd footer template should be empty

        Protected Sub Page_SaveStateComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SaveStateComplete
            Dim DG As GridView = GridView1
                Dim Tbl As Table = DG.Controls(0)
                Dim tr As GridViewRow
                Dim i As Integer
                Dim j As Integer
    
    tr = Tbl.Rows(Tbl.Rows.Count - 1) 'this line assume last row is footer row
    
                        tr.Cells(0).ColumnSpan = 2 'if you have 3 columns then colspan = 3 instead
    
                        For j = 1 To 1 'if you have 3 columns then j = 1 To 2 instead
                            tr.Cells(j).Visible = False
                        Next
    
        End Sub
    
  • I was doing something like this - trying to have a button, in the footer span multiple cols.

    I ran into a problem when I set columnspan via code, because a) I'm a noob, and b) it was not doing what I expected. I don't remember all the details, but there was some kind of gotcha in there - like it was adding extra columns or something.

    Here was my solution. Maybe some of it will be useful. I did in the prerender for the gridview (gvDocs).

    And what got it working correctly for me, was programatically removing cells of the footer as well as setting the columnspan.

    Even if the code doesn't help, maybe people will get a laugh at the encroaching forgetfulness afflicting me. It makes me laugh sometimes.

       Protected Sub gvDocs_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles gvDocs.PreRender
    
            If gvDocs.Rows.Count > 0 Then
    
    
                Dim m As Integer = gvDocs.FooterRow.Cells.Count
                For i As Integer = m - 1 To 1 Step -1
                    If i <> 8 Then '7 is the number of the column with the applychanges button in it.
                        gvDocs.FooterRow.Cells.RemoveAt(i)
                    End If
                Next i
                gvDocs.FooterRow.Cells(1).ColumnSpan = 6 '6 is the number of visible columns to span.
            End If
        End Sub
    

0 comments:

Post a Comment