Jag har en datalist som jag försöker koppla en pagingfunktion till.. Jag har denna funktion för att skapa detta och den kallas på, i Page_Load och under de två linkbuttons jag har.
public void ItemsGet()
{
PagedDataSource objPds = new PagedDataSource();
DataSet dataset = new DataSet();
dataset = db.getCategorys();
objPds.AllowPaging = true;
objPds.DataSource = dataset.Tables[0].DefaultView;
objPds.PageSize = 3;
objPds.CurrentPageIndex = CurrentPage;
// Disable Prev or Next buttons if necessary
cmdPrev.Enabled = !objPds.IsFirstPage;
cmdNext.Enabled = !objPds.IsLastPage;
DataList1.DataSource = objPds;
DataList1.DataBind();
}
När man klickar på linkbuttons för pagingen så körs följande:
Eller en annan metod som räknar upp CurrentPage...
public int CurrentPage
{
get
{
// look for current page in ViewState
object o = this.ViewState["_CurrentPage"];
if (o == null)
return 0; // default to showing the first page
else
return (int) o;
}
set
{
this.ViewState["_CurrentPage"] = value;
}
}
Den första sidan visas, men när jag klickar på nästa (linkbutton) så blir listan tom.. :( (ja, där finns mer data i dataset:et)
hm, CurrentPage har värdet 0 första gången men när jag klickar och den (enligt mig ska räknas upp) så blir värdet två (hade endast 6 tupler innan och lade till en och då visas den sista).
Mer än så behöver man inte skriva. Och att "rebinda" DataGrid:et vid varje newpage sliter på databasen vilket resulterar i en dödlig overhead, tänk om ni har ett par miljoner rader i databasen?? va va va?? §e . Lägg tabellen i cachen istället som jag, så blir det bara 1 SELECT oavsett hur många gånger surfaren bläddrar, eftersom ni vet att surfaren kommer klicka igenom pageindex i snabb takt.
jo jag tycker att det låter lättast att bara köra på datagrid.. men visst vill man vara mer avancerad än så så kan man ju skapa en egen till datagrid. ;P