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...
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();
}
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I totally missed the onClick hook!... this was the problem.
Many tanks,
Rit