Link to home
Start Free TrialLog in
Avatar of rito1
rito1

asked on

Addding Paging to a Repeater Control

Hi All,

I believe I have closely following the following article to implement paging for a Repeater control but for some reason it doesn't seem to be paging to the next set of data.

http://aspnet.4guysfromrolla.com/demos/TestRepeater.aspx

My code is as follows... can anyone see anything that could be wrong?...

The only differences between the 2 are my datasource is a SQL database called by SubSonic and my object variables have different names...
<h1>Product Search Results</h1>
<table width="100%" border="0">
   <tr>
      <td>  Repeater control with Paging functionality</td>
   </tr>
   <tr>
      <td>  <asp:label id="lblCurrentPage" runat="server"></asp:label></td>
   </tr>
   <tr>
      <td>  <asp:button id="cmdPrev" runat="server" text=" << "></asp:button>
          <asp:button id="cmdNext" runat="server" text=" >> "></asp:button></td>
   </tr>
</table>
<table border="1">
   <asp:repeater id="repeaterItems" runat="server">
      <itemtemplate>
         <tr>
            <td>  <b><%# DataBinder.Eval(Container.DataItem, "ProductTitle")%></b></td>
            <td>  <b><%# DataBinder.Eval(Container.DataItem, "ProductRef")%></b></td>
            <td>  <b><%# DataBinder.Eval(Container.DataItem, "Price")%></b></td>
         </tr>
      </itemtemplate>
   </asp:repeater>
</table>
 
 
 
public partial class results : System.Web.UI.Page
{
 
    public int CurrentPage
    {
        get
        {
            // look for current page in ViewState
            object o = this.ViewState["_CurrentPage"];
            if (o == null)
                return 0; // default page index of 0
            else
                return (int)o;
        }
 
        set
        {
            this.ViewState["_CurrentPage"] = value;
        }
    }
 
    protected void Page_Load(object sender, EventArgs e)
    {
        ItemsGet();
    }
 
    private void ItemsGet()
    {
 
        string phrase = Request.QueryString["phrase"];
        DataSet dsResults = DAOCartDB.SPs.SprocCartSelectSearchSimple(phrase).GetDataSet();
 
        // Populate the PagedDataSource control with the DataSet
        PagedDataSource pgResults = new PagedDataSource();
        pgResults.DataSource = dsResults.Tables[0].DefaultView;
 
        // Indicate that the data should be paged
        pgResults.AllowPaging = true;
 
        // Set the number of items you wish to display per page
        pgResults.PageSize = 1;
 
        // Set the PagedDataSource's current page
        pgResults.CurrentPageIndex = CurrentPage;
 
        lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of " + pgResults.PageCount.ToString();
 
        // Disable Prev or Next buttons if necessary
        cmdPrev.Enabled = !pgResults.IsFirstPage;
        cmdNext.Enabled = !pgResults.IsLastPage;
 
        repeaterItems.DataSource = pgResults;
        repeaterItems.DataBind();
    }
 
    private void cmdPrev_Click(object sender, System.EventArgs e)
    {
        // Set viewstate variable to the previous page
        CurrentPage -= 1;
 
        // Reload control
        ItemsGet();
    }
 
    private void cmdNext_Click(object sender, System.EventArgs e)
    {
        // Set viewstate variable to the next page
        CurrentPage += 1;
 
        // Reload control
        ItemsGet();
    }    
}

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of stu28bu
stu28bu

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of rito1
rito1

ASKER

Hi stu28bu,

I totally missed the onClick hook!... this was the problem.

Many tanks,

Rit