Fork me on GitHub

AspNetPager demo - Search result paging (postback)

Search result paging with AspNetPager control.

Order ID:  
Order IDOrder DateCompany NameCustomer IDEmployee Name
11077 5/6/1998 Rattlesnake Canyon Grocery RATTC Nancy Davolio
11076 5/6/1998 Bon app' BONAP Margaret Peacock
11075 5/6/1998 Richter Supermarkt RICSU Laura Callahan
11074 5/6/1998 Simons bistro SIMOB Robert King
11073 5/5/1998 Pericles Comidas clásicas PERIC Andrew Fuller
11072 5/5/1998 Ernst Handel ERNSH Margaret Peacock
11071 5/5/1998 LILA-Supermercado LILAS Nancy Davolio
11070 5/5/1998 Lehmanns Marktstand LEHMS Andrew Fuller
11069 5/4/1998 Tortuga Restaurante TORTU Nancy Davolio
11068 5/4/1998 Queen Cozinha QUEEN Laura Callahan
11067 5/4/1998 Drachenblut Delikatessen DRACD Nancy Davolio
11066 5/1/1998 White Clover Markets WHITC Robert King
Page:1 of 27,12 per page
<<<12345678910...>>>  

Search.aspx:

<div>Order ID:<asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem>>=</asp:ListItem>
        <asp:ListItem><=</asp:ListItem>
        <asp:ListItem>=</asp:ListItem>
    </asp:DropDownList><asp:TextBox ID="tb_orderid" runat="server" Width="90px">11000</asp:TextBox>
    <asp:Button ID="btn_search" runat="server" OnClick="btn_search_Click" Text="Search" />
    <asp:Button ID="btn_all" runat="server" OnClick="btn_all_Click" Text="Show All" Enabled="false"/>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="tb_orderid"
        Display="Dynamic" ErrorMessage="RequiredFieldValidator">Required</asp:RequiredFieldValidator> 
    <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="tb_orderid"
        Display="Dynamic" ErrorMessage="CompareValidator" Operator="DataTypeCheck" SetFocusOnError="True"
        Type="Integer">Must be an integer value</asp:CompareValidator>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SqlConnection %>">
    </asp:SqlDataSource>
</div>

   <asp:Repeater ID="Repeater1" runat="server" >
        <HeaderTemplate>
        <table width="100%" class="table table-bordered">
        <tr><th style="width:15%">Order ID</th><th style="width:15%">Order Date</th><th style="width:30%">Company Name</th><th style="width:20%">Customer ID</th><th style="width:20%">Employee Name</th></tr>
        </HeaderTemplate>
        <ItemTemplate>
        <tr>
        <td><%#DataBinder.Eval(Container.DataItem,"orderid")%></td>
        <td><%#DataBinder.Eval(Container.DataItem,"orderdate","{0:d}")%></td>
        <td><%#DataBinder.Eval(Container.DataItem, "companyname")%></td>
        <td><%#DataBinder.Eval(Container.DataItem,"customerid")%></td>
        <td><%#DataBinder.Eval(Container.DataItem,"employeename")%></td>
        </tr>
        </ItemTemplate>
        <FooterTemplate>
        </table>
        </FooterTemplate>
        </asp:Repeater>
    <webdiyer:aspnetpager id="AspNetPager1" runat="server" PageSize="12" AlwaysShow="True" OnPageChanged="AspNetPager1_PageChanged" ShowCustomInfoSection="Left" CustomInfoSectionWidth="40%" ShowPageIndexBox="always" PageIndexBoxType="DropDownList"
    CustomInfoHTML="Page:<font color='red'><b>%currentPageIndex%</b></font> of %PageCount%,%PageSize% per page"></webdiyer:aspnetpager>

Search.aspx.cs:

using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Search_Default : Page
{
    const string vsKey = "searchCriteria"; //ViewState key
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            searchOrders(string.Empty);
        }
    }

    protected void btn_search_Click(object sender, EventArgs e)
    {
        AspNetPager1.CurrentPageIndex = 1;
        btn_all.Enabled = true;
        string s = " where orderid " + DropDownList1.SelectedValue + tb_orderid.Text;
        ViewState[vsKey] = s;
        searchOrders(s);
    }

    void searchOrders(string sWhere)
    {
        SqlDataSource1.SelectCommand = "select orderid,orderdate,customerid,CompanyName,EmployeeName from orders " + sWhere + " order by orderid desc";
        DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
        AspNetPager1.RecordCount = dv.Count;

        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dv;
        pds.AllowPaging = true;
        pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
        pds.PageSize = AspNetPager1.PageSize;
        Repeater1.DataSource = pds;
        Repeater1.DataBind();
    }

    protected void AspNetPager1_PageChanged(object src, EventArgs e)
    {
        searchOrders((string)ViewState[vsKey]);
    }
    protected void btn_all_Click(object sender, EventArgs e)
    {
        ViewState[vsKey] = null;
        btn_all.Enabled = false;
        AspNetPager1.CurrentPageIndex = 1;
        searchOrders(null);
    }
}