Click here to Skip to main content
Licence 
First Posted 24 Oct 2007
Views 132,237
Downloads 3,040
Bookmarked 56 times

How to Fixed GridView's Header and Footer when scrolling?

By | 30 Oct 2007 | Article
Using CSS, Javascript to Fixed Gridview's Header and Footer

Screenshot - gvDemo.jpg

Introduction

This article is to show you how to Fix GridView's Header and Footer in a simple code with CSS and JavaScript.

Background

Understand CSS and JavaScript

Using the code

  1. Use the below 2 Css Classes for GridView Header and footer
    .GVFixedHeader { font-weight:bold; background-color: Green; position:relative; 
                     top:expression(this.parentNode.parentNode.parentNode.scrollTop-1);}
    .GVFixedFooter { font-weight:bold; background-color: Green; position:relative;
                     bottom:expression(getScrollBottom(this.parentNode.parentNode.parentNode.parentNode));}
    
  2. Use the below JavaScript to compute Footer's Position
    <script language="javascript" type="text/javascript">
            function getScrollBottom(p_oElem)
            {
             return p_oElem.scrollHeight - p_oElem.scrollTop - p_oElem.clientHeight;
            }
    </script>
  3. Create GridView inside a Panle, Set Panle's property ScrollBars to "Auto", Gridview's HeaderStyle to "GVFixedHeader" and FooterStyle to "GVFixedFooter".
    <asp:Panel runat="server" ID="pnlContainer" ScrollBars="Auto" Height="150px" Width="400">
        <asp:GridView ShowFooter="True" runat="server" Width="96%" ID="gvDemo" AutoGenerateColumns="False">
        <HeaderStyle CssClass="GVFixedHeader" />
        <FooterStyle CssClass="GVFixedFooter" />
            <Columns>
                <asp:TemplateField HeaderText="C1">
                    <ItemTemplate>
                        <asp:Label ID="Label2" runat="server" Text='<%# Bind("C1") %>'></asp:Label>
                    </ItemTemplate>
                    <FooterTemplate>
                        C1 Footer Here
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="C2">
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("C2") %>'></asp:Label>
                    </ItemTemplate>
                    <FooterTemplate>
                        C2 Footer Here
                    </FooterTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
       </asp:Panel>
  4. Code Behide: In the Page_Load function we Bind the data source to GridView.
     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim dt As New DataTable
            dt.Columns.Add("C1")
            dt.Columns.Add("C2")
            Dim drRow As DataRow
            For i As Integer = 0 To 10
                drRow = dt.NewRow
                drRow(0) = "C1" & i
                drRow(1) = "C2" & i
                dt.Rows.Add(drRow)
            Next
            Me.gvDemo.DataSource = dt
            Me.gvDemo.DataBind()
        End Sub
  5. Run the Page, you will see that the Header and Footer is fixed when you scrolling.

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

fenglinzh

Web Developer

Singapore Singapore

Member

My Website:
Hcj @ Singapore

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
SuggestionShow footer at the bottom of the grid when there is less data PinmemberMallyaC21:10 27 Mar '12  
QuestionIts not work Pinmembertzahiel3:57 22 Jan '12  
GeneralMy vote of 5 Pinmembercllamed15:37 21 Aug '11  
GeneralA Scrollable GridView with a Fixed Header in .NET Pingroupelizas19:21 9 Feb '10  
GeneralMy vote of 1 Pinmemberthawait.himanshu16:11 3 Feb '10  
GeneralMy vote of 1 PinmemberMember 393553710:21 16 Dec '08  
GeneralThis code not working in Mozilla firefox Pinmembermanomani2:41 23 Sep '08  
GeneralPerfect PinmemberBrian McQueen4:49 18 Sep '08  
GeneralAlternate method: no resize bug Pinmemberkccougar5:04 6 Nov '07  
QuestionRe: Alternate method: no resize bug Pinmemberpbansal0:40 31 Dec '07  
GeneralRe: Alternate method: no resize bug Pinmemberkccougar3:17 31 Dec '07  
GeneralNice One PinmemberPrakash@kappsoft20:17 30 Oct '07  
GeneralMissing source Pinmemberchitty222:09 29 Oct '07  
AnswerRe: Missing source Pinmemberfenglinzh17:05 30 Oct '07  
Sorry for the misstake. I have updated the file.
 

GeneralOOPs!!! PinmemberNigam SAMir18:26 25 Oct '07  
QuestionThis method only works well with low amount of rows in your grid Pinmembertoprope982:59 30 Oct '07  
AnswerRe: This method only works well with low amount of rows in your grid Pinmemberfenglinzh17:10 30 Oct '07  
GeneralRe: This method only works well with low amount of rows in your grid [modified] Pinmembertoprope987:37 31 Oct '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
Web03 | 2.5.120529.1 | Last Updated 30 Oct 2007
Article Copyright 2007 by fenglinzh
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid