Search code examples
c#asp.netgridviewpagination

Page is getting refreshed while changing the page no from paging in gridview


I have implemented the paging functionality in my gridview. Below is the code

<asp:GridView ID="grdCMPChangeDetails" runat="server" CssClass="table table-bordered" AutoGenerateColumns="false" AllowPaging="true" PageSize="1" PageIndex="1"
                                        OnPageIndexChanging="grdCMPChangeDetails_PageIndexChanging">
                                        <Columns>
                                            <asp:BoundField ItemStyle-Width="150px" DataField="SAP-ID" HeaderText="SAP ID" />
                                            <asp:BoundField ItemStyle-Width="150px" DataField="LAT" HeaderText="Latitude" />
                                            <asp:BoundField ItemStyle-Width="150px" DataField="LONG" HeaderText="Longitude" />
                                            <asp:BoundField ItemStyle-Width="150px" DataField="R4GSTATE" HeaderText="State" />
                                            <asp:BoundField ItemStyle-Width="150px" DataField="OLD_LATITUDE" HeaderText="Old Latitude" />
                                            <asp:BoundField ItemStyle-Width="150px" DataField="OLD_LONGITUDE" HeaderText="Old Longitude" />
                                        </Columns>
                                    </asp:GridView>

CS

Datatbind

grdCMPChangeDetails.DataSource = dtSuccessRecord;
                    grdCMPChangeDetails.DataBind();

protected void grdCMPChangeDetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grdCMPChangeDetails.PageIndex = e.NewPageIndex;
    grdCMPChangeDetails.DataBind();
}

but while changing the page no, its not working and instead the page is getting refreshed.


Solution

  • first Put Grid in an Update Panel

    <asp:UpdatePanel ID="updatePanel" runat="server">
       <ContentTemplate>
           //YourGrid
       </ContentTemplate>
    </asp:UpdatePanel>
    

    you just need to make a method for populating GridView like this

    private void populateGrid()
    {
       //Code For Populating GridView
    }
    

    put it on Page Load Like This

    protected void Page_Load(object sender, EventArgs e)
            {
    
                if (!IsPostBack)
                {                
                    populateGrid();
                }
            }
    

    on Page Index like this

       protected void grdCMPChangeDetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
                try
                {
                    grdCMPChangeDetails.PageIndex = e.NewPageIndex;
                    populateGrid();              
                }
                catch (Exception ex)
                {
    
                }
            }
    

    And you're done