Search code examples
asp.netlistviewdatapager

ASP.NET DataPager


I am trying to link ASP.NET DataPager control to ASP.NET ListView

<div>
    <asp:ListView ID="ListView1" runat="server">
        <ItemTemplate>
            <a href="#"><%#DataBinder.Eval(Container.DataItem,"LinkText")%></a>
        </ItemTemplate>           
    </asp:ListView>

    <asp:DataPager runat="server" ID="DataPager1" PagedControlID="ListView1" PageSize="2">
        <Fields>
            <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowLastPageButton="True" />
        </Fields>
    </asp:DataPager>        

</div>

In Page_Load i load ListView with DataTable

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack == false)
        {
            _fl.ConnectToSQLServer();

            DataTable dt = new DataTable();

            dt.Load(_fl.GetCategories());

            ListView1.DataSource = dt;
            ListView1.DataBind();

            _fl.DisconnectFromSQLServer();
        }
    }

Data is displayed correctly but DataPager does not work as it should

Any Help will be appreciated. Thank You.


Solution

  • Switch from Page_Load to OnPreRender for populating the ListView and skip the IsPostBack check

    Try

    protected override void OnPreRender(EventArgs e)
    {
                base.OnPreRender(e);
               _fl.ConnectToSQLServer();
    
                DataTable dt = new DataTable();
    
                dt.Load(_fl.GetCategories());
    
                ListView1.DataSource = dt;
                ListView1.DataBind();
    
                _fl.DisconnectFromSQLServer();   
    
    
    }