Wednesday, December 28

Scrollable Gridview With fixheader using JQuery in Asp.net

Introduction:

In this article I will explain how to implement scrollable gridview with fixed header in asp.net using JQuery. 



Description: 

In Previous posts I explained lot of articles regarding Gridview. Now I will explain how to implement scrollable gridview with fixed header in asp.net. I have one gridview that contains lot of records and I used paging for gridview but the requirement is to display all the records without paging. I removed paging at that time gridview occupied lot of space because it contains more records to solve this problem we implemented scrollbar.  After scrollbar implementation if we scroll the gridview we are unable to see Gridview header.  


To implement Scrollable gridview with fixed header I tried to implement concept with css and JavaScript but there is no luck because maintaining fixed header working in IE but not in Mozilla and vice versa to solve this browser compatibility problem I used JQuery plugin to maintain fixed header for scrollable gridview and I tested it in all the browsers it’s working fine without any problem.

First design the table in database and give name UserInfomation

ColumnName
DataType
UserId
Int(set identity property=true)
UserName
varchar(50)
LastName
varchar(50)
Location
varchar(50)

After completion table creation design aspx page like this
 

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="Scripts/ScrollableGridPlugin.js" type="text/javascript"></script>
<title>Scrollable Gridview with Fixed Header</title>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$('#<%=gvdetails.ClientID %>').Scrollable({
        ScrollHeight: 300
    });
)
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView runat="server" ID="gvdetails" DataSourceID="dsdetails" AutoGenerateColumns="false">
<RowStyle BackColor="#EFF3FB" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="UserId" HeaderText="UserId" />
<asp:BoundField DataField="UserName" HeaderText="UserName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" />
<asp:BoundField DataField="Location" HeaderText="Location" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="dsdetails" runat="server"ConnectionString="<%$ConnectionStrings:dbconnection %>"
SelectCommand="select * from UserInformation"/>
</form>
</body>
</html>
If you observe above code I added jquery-1.4.1.min.js and ScrollableGridPlugin.js script files in header section of code you need to download the attached code to get these script files by using these files we can manage the gridview header fixed postion.

Here don’t forgot to set the connection string in web.config file here I am getting database connection from web.config file for that reason you need to set the connectionstring in web.config file like this

<connectionStrings>
<add name="dbconnection" connectionString="Data Source=SureshDasari;Integrated Security=true;Initial Catalog=MySampleDB"/>
</connectionStrings>
Demo

Download sample code attached






Thanks Shibashish mohanty

8 comments:

  1. It's not working for me. Tested with Mozilla 10 and IE8

    ReplyDelete
  2. How to set the height of the scrollbar..
    In my case, it should be scrollable if it contains more than 10 rows else it should not.
    Please help me

    ReplyDelete
    Replies
    1. Take one Panel inside this panel put your gridview and write the code like this

      if (DS.Tables.Count > 0)
      {

      GdViewLndryRprt.DataSource = DS.Tables[0];
      GdViewLndryRprt.DataBind();
      if (DS.Tables[0].Rows.Count > 9)
      {
      //bydefault panel7 should be set as visible=false and scrollbars=none
      Panel7.Visible = true;
      Panel7.ScrollBars = ScrollBars.Vertical;
      Panel7.Height = 250;
      }
      else
      {
      Panel7.Visible = true;
      Panel7.ScrollBars = ScrollBars.Auto;
      Panel7.Height = GdViewLndryRprt.Height;
      }


      }

      Delete
    2. Goto the javascript plugin and fix the height property according to your row.

      Delete
  3. Take one Panel inside this panel put your gridview and write the code like this

    if (DS.Tables.Count > 0)
    {

    GdViewLndryRprt.DataSource = DS.Tables[0];
    GdViewLndryRprt.DataBind();
    if (DS.Tables[0].Rows.Count > 9)
    {
    //bydefault panel7 should be set as visible=false and scrollbars=none
    Panel7.Visible = true;
    Panel7.ScrollBars = ScrollBars.Vertical;
    Panel7.Height = 250;
    }
    else
    {
    Panel7.Visible = true;
    Panel7.ScrollBars = ScrollBars.Auto;
    Panel7.Height = GdViewLndryRprt.Height;
    }


    }

    ReplyDelete
  4. My table is not aligned.

    The data field for the group name does not align with its title filed.

    Can you tell me where I did wrong?

    Thanks.

    ReplyDelete
    Replies
    1. Hello Clairelee Make sure that U have provided the gridview Id as "gvdetails" .I means By which The Script IS Identifying that Control.
      Its working Fine .But if you did some mistake then plz Give Your Total Code I will rectify that code.Thanks a lot For Replying

      Delete
  5. Hello Clairelee Make sure that U have provided the gridview Id as "gvdetails" .I means By which The Script IS Identifying that Control.
    Its working Fine .But if you did some mistake then plz Give Your Total Code I will rectify that code.Thanks a lot For Replying

    ReplyDelete

Please don't spam, spam comments is not allowed here.

ShibashishMnty
shibashish mohanty