Click here to Skip to main content
15,886,137 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
i try to freeze asp gridview header and column. and i am using Freeze Table Rows And Columns With JavaScript - GridViewScroll.js | CSS Script[^] this code in my asp gridview without using master page and it's working perfectly. but when i try this code in another form with master page then it's not working. can any one suggest me the solution.

What I have tried:

here is my code:-

Master page:-

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="LoginMaster.master.cs"
    Inherits="LoginMaster" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en">
<head>
    <title>master page</title>
    <link href="../FrezeeStyle/css/web.css" rel="stylesheet" />
    <script type="text/javascript" src="../FrezeeStyle/js/gridviewscroll.js"></script>


    <asp:ContentPlaceHolder ID="Head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body >
    <form id="form1" runat="server" enctype="multipart/form-data" method="post">
        

            <asp:ContentPlaceHolder ID="Content" runat="server">
            </asp:ContentPlaceHolder>

</form>
</body>
</html>


Content page:-

<%@ Page Title="" Language="C#" MasterPageFile="Master.master" AutoEventWireup="true" CodeFile="Freeze.aspx.cs" Inherits="Freeze" %>

<asp:Content ID="Content1" ContentPlaceHolderID="Head" Runat="Server">

    <script type="text/javascript">
        var gridViewScroll = null;
        window.onload = function () {
            gridViewScroll = new GridViewScroll({
                elementID: "gvtest",
                width: "1200px",
                height: "350px",
                freezeColumn: true,
                freezeFooter: true,
                freezeColumnCssClass: "GridViewScrollItemFreeze",
                freezeFooterCssClass: "GridViewScrollFooterFreeze",
                freezeHeaderRowCount: 1,
                freezeColumnCount: 3,
                onscroll: function (scrollTop, scrollLeft) {
                    console.log(scrollTop + " - " + scrollLeft);
                }
            });
            gridViewScroll.enhance();
        }
    </script>

</asp:Content>


<asp:Content ID="Content2" ContentPlaceHolderID="Content" Runat="Server">


   <div id='table-container' style="white-space: nowrap;width:1200px">
  <asp:GridView ID="gvtest" runat="server" GridLines="Both" CellPadding="3" AutoGenerateColumns="false" HeaderStyle-BackColor="Blue" HeaderStyle-ForeColor="White" >
                        <Columns>
                            <asp:BoundField DataField="test1" HeaderText="Username"  ItemStyle-BackColor="Gray"/>
                            <asp:BoundField DataField="test2" HeaderText="Full Name"   ItemStyle-BackColor="Gray" />
                            <asp:BoundField DataField="test3" HeaderText="EmailID" ItemStyle-BackColor="Gray" />
                            <asp:BoundField DataField="test4" HeaderText="Is User Active?"   />
                            <asp:BoundField DataField="test5" HeaderText="Full Name"     />
                            <asp:BoundField DataField="test6" HeaderText="EmailID"  />
                            <asp:BoundField DataField="test7" HeaderText="Is User Active?"    />
                            <asp:BoundField DataField="test1" HeaderText="Username" />
                            <asp:BoundField DataField="test2" HeaderText="Full Name"   />
                            <asp:BoundField DataField="test3" HeaderText="EmailID"  />
                            <asp:BoundField DataField="test4" HeaderText="Is User Active?"   />
                            <asp:BoundField DataField="test5" HeaderText="Full Name"     />
                            <asp:BoundField DataField="test6" HeaderText="EmailID"  />
                            <asp:BoundField DataField="test7" HeaderText="Is User Active?"    />
                            <asp:BoundField DataField="test1" HeaderText="Username" />
                            <asp:BoundField DataField="test2" HeaderText="Full Name"   />
                            <asp:BoundField DataField="test3" HeaderText="EmailID"  />
                            <asp:BoundField DataField="test4" HeaderText="Is User Active?"   />
                            <asp:BoundField DataField="test5" HeaderText="Full Name"     />
                            <asp:BoundField DataField="test6" HeaderText="EmailID"  />
                            <asp:BoundField DataField="test7" HeaderText="Is User Active?"    />
                        </Columns>
                    </asp:GridView>
</div>

</asp:Content>


server side code:-

on grid bind just add this lines:-
if (gvtest.Rows.Count > 0)
       {
           gvtest.UseAccessibleHeader = true;
           gvtest.HeaderRow.TableSection = TableRowSection.TableHeader;
       }
Posted
Updated 29-Jul-20 0:15am

1 solution

HTML
elementID: "gvtest",


Your js is attaching to an element with an id of "gvtest". View the source of your page in the browser, do you see any element with an id of "gvtest"? When you use master pages the ids used in the html elements won't always match the ids you use in your server-side mark-up. To get the id the control is actual using you need to use ClientID

HTML
elementID: "<%=gvtest.ClientID%>",
 
Share this answer
 
Comments
TCS54321 29-Jul-20 6:21am    
it's work for me. Thank you so much.. you save my day.

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