Click here to Skip to main content
15,891,718 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
hi,

This is pradeep.

i want gridview fixed header in asp.net.

plz send me suggestions.
Posted
Updated 27-Feb-12 0:37am
Comments
Rajesh Anuhya 27-Feb-12 6:37am    
Edited
--RA
Rajesh Anuhya 27-Feb-12 6:38am    
What do you mean my Fixed header??, can you elaborate it more.
--RA

for fixing header in gridview please follow this it will might help you..

1)make some changes in your aspx page like this..

place 2 divs like this..

ASP.NET
<div id="HeaderDivACT">
    </div>
    <div id="DataDivACT" style="overflow: auto; width: 100%;"  önscroll="Onscrollfnction();">
<!--place your grid view design here -->
<asp:gridview id="GridView1" runat="server" autogeneratecolumns="false" xmlns:asp="#unknown">
</asp:gridview>
</div>


2) now call one javascript function while your gridview will complete after loading data from database..
means after databinding of gridview you need to call this function

JavaScript
<script language="javascript" type="text/javascript">
var sp = 0;
function freezHeader(idGVDailyActivity) {
    try {
        var DataGridObj = document.getElementById(idGVDailyActivity);
        if (DataGridObj != null) {
            if (DataGridObj) {
                if (DataGridObj.clientWidth == 0) {
                    setTimeout("freezHeader(" + idGVDailyActivity + ")", 2000);
                    return;
                }
                var DataDivObj = document.getElementById('DataDivACT');
                var HeaderDivObj = document.getElementById('HeaderDivACT');
                //********* Creating new table which contains the header row ***********
                var HeadertableObj = HeaderDivObj.appendChild(document.createElement('table'));
                DataDivObj.style.paddingTop = '0px';
                //var DataDivWidth = DataDivObj.clientWidth + 15;
                var DataDivWidth = $(window).width() - 20;
                DataDivObj.style.width = '5000px';
                //********** Setting the style of Header Div as per the Data Div ************
                HeaderDivObj.className = DataDivObj.className;
                HeaderDivObj.style.cssText = DataDivObj.style.cssText;
                //**** Making the Header Div scrollable. *****
                HeaderDivObj.style.overflow = 'auto';
                //*** Hiding the horizontal scroll bar of Header Div ****
                HeaderDivObj.style.overflowX = 'hidden';
                //**** Hiding the vertical scroll bar of Header Div **** 
                HeaderDivObj.style.overflowY = 'hidden';
                //HeaderDivObj.style.height = DataGridObj.rows[0].clientHeight + 'px';
                HeaderDivObj.style.height = '30px';
                //**** Removing any border between Header Div and Data Div ****
                HeaderDivObj.style.borderBottomWidth = '0px';
                //********** Setting the style of Header Table as per the GridView ************
                HeadertableObj.className = DataGridObj.className;
                //**** Setting the Headertable css text as per the GridView css text
                if (DataGridObj.style == null)
                    return;
                HeadertableObj.style.cssText = DataGridObj.style.cssText;
                HeadertableObj.border = '1px';
                HeadertableObj.rules = 'all';
                HeadertableObj.cellPadding = DataGridObj.cellPadding;
                HeadertableObj.cellSpacing = DataGridObj.cellSpacing;
                //********** Creating the new header row **********
                var Row = HeadertableObj.insertRow(0);
                Row.className = DataGridObj.rows[0].className;
                Row.style.cssText = DataGridObj.rows[0].style.cssText;
                Row.style.fontWeight = 'bold';
                //******** This loop will create each header cell *********
                for (var iCntr = 0; iCntr < DataGridObj.rows[0].cells.length; iCntr++) {
                    var spanTag = Row.appendChild(document.createElement('td'));
                    spanTag.innerHTML = DataGridObj.rows[0].cells[iCntr].innerHTML;
                    var width = 0;
                    //****** Setting the width of Header Cell **********
                    if (spanTag.clientWidth > DataGridObj.rows[1].cells[iCntr].clientWidth) {
                        width = spanTag.clientWidth;
                    }
                    else {
                        width = DataGridObj.rows[1].cells[iCntr].clientWidth;
                    }
                    if (iCntr <= DataGridObj.rows[0].cells.length - 2) {
                        spanTag.style.width = width + 'px';
                    }
                    else {
                        spanTag.style.width = width + 20 + 'px';
                    }
                    spanTag.style.textAlign = 'center';
                    DataGridObj.rows[1].cells[iCntr].style.width = width + 'px';
                }
                var tableWidth = DataGridObj.clientWidth;

                //********* Hidding the original header of GridView *******
                DataGridObj.rows[0].style.display = 'none';
                //********* Setting the same width of all the componets **********
                HeaderDivObj.style.width = DataDivWidth + 'px';
                DataDivObj.style.width = DataDivWidth + 'px';
                DataGridObj.style.width = tableWidth + 'px';
                HeadertableObj.style.width = tableWidth + 20 + 'px';
                DataDivObj.style.height = ($(window).height() - 305) + 'px';
                DataDivObj.scrollTop = sp;
            }
        }
    } catch (e) { }
}
function Onscrollfnction() {
    var scPos = document.getElementById('scrlPos');
    var div = document.getElementById('DataDivACT');
    var div2 = document.getElementById('HeaderDivACT');
    //****** Scrolling HeaderDiv along with DataDiv ******
    sp = div.scrollTop;
    div2.scrollLeft = div.scrollLeft;
    return false;
}


3) call this function like this
JavaScript
$(document).ready(function() { freezHeader('<%= GVDailyActivity.ClientID %>'); });
 
Share this answer
 
v3

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900