126 messaggi dal 14 aprile 2006
salve, ho un datalist, che deve essere paginato , e deve visualizzare al massimo 4 record distribuiti su 1 sola riga, quindi se il risultato della query sono 20 record deve visualizzare una riga di 4 elementi, e con la paginazione scorrere alla pagina successiva con altri 4 elementi. ora la paginazione automaica che gridview non c'è nel datalist (chissà come mai..) qualcuno può consigliarmi un link o un tutorial per implementarla.. e poi come faccio a far vedere al massimo 4 record per pagina, senza la propietà PageIndex?


<asp:DataList GridLines="none" RepeatDirection="Horizontal" ID="foto_del_set" runat="server" >
<ItemTemplate>
<img src="autori/<%#Eval("username") %>/foto/small/<%#Eval("nome_file") %>" alt="" />
</ItemTemplate>
</asp:DataList>
126 messaggi dal 14 aprile 2006
, ho risolto,

per chiunque li dovesse servire paginare un datalist, vi posto il sistema che ho utilizzato:

prima si utilizza il controllo PagedDataSource nell'onload della pagina.

PagedDataSource pag=new PagedDataSource();
DataTable = conn.getRecors(query) // funzione che torna una datatable con i dati della query che popola il datalist.
pag.PageSize = 4;
pag.AllowPaging = true;
pag.DataSource = dt.DefaultView;
foto_del_set.DataSource = pag;
foto_del_set.DataBind(); // foto_del_set è il nome del datalist

poi mettete questo codice..

if (Request.QueryString["page"] != null)
{
// subtract 1 because the PagedDataSource uses a zero-based index
int intPage = (Convert.ToInt32(Request.QueryString["page"]) - 1);
// correct for a page index less than 0 or greater than the last page
if (intPage < 0) intPage = 0;
if (intPage > pag.PageCount) intPage = pag.PageCount - 1;
pag.CurrentPageIndex = intPage;
}

che valuta il parametro get della pagina,

ed infone dovete generare i link delle pagine, e per far cià ho trovato questa funzione in c#..

quindi aggiungete sotto al blocco precedente il richiamo di questa funzione

paginazione.Text = CreatePagerLinks(pag, "home_page_autore.aspx?id_foto=" + Request["id_foto"]);

pag è l'oggetto PagedDataSource, e poi li divete passare la pagina in cui sta il datalist, con eventuali parametri get

public static string CreatePagerLinks(PagedDataSource objPds, string BaseUrl)
{
StringBuilder sbPager = new StringBuilder();
sbPager.Append("altre pagine: ");
if (!objPds.IsFirstPage)
{
// first page link
sbPager.Append("<a href=\"");
sbPager.Append(BaseUrl);
sbPager.Append("\">|<</a> ");
if (objPds.CurrentPageIndex != 1)
{
// previous page link
sbPager.Append("<a href=\"");
sbPager.Append(BaseUrl);
sbPager.Append("&page=");
sbPager.Append(objPds.CurrentPageIndex.ToString());
sbPager.Append("\" alt=\"Previous Page\"><<</a> ");
}
}
// calc low and high limits for numeric links
int intLow = objPds.CurrentPageIndex - 1;
int intHigh = objPds.CurrentPageIndex + 3;
if (intLow < 1) intLow = 1;
if (intHigh > objPds.PageCount) intHigh = objPds.PageCount;
if (intHigh - intLow < 5) while ((intHigh < intLow + 4) && intHigh < objPds.PageCount) intHigh++;
if (intHigh - intLow < 5) while ((intLow > intHigh - 4) && intLow > 1) intLow--;
for (int x = intLow; x < intHigh + 1; x++)
{
// numeric links
if (x == objPds.CurrentPageIndex + 1) sbPager.Append(x.ToString() + " ");
else
{
sbPager.Append("<a href=\"");
sbPager.Append(BaseUrl);
sbPager.Append("&page=");
sbPager.Append(x.ToString());
sbPager.Append("\">");
sbPager.Append(x.ToString());
sbPager.Append("</a> ");
}
}
if (!objPds.IsLastPage)
{
if ((objPds.CurrentPageIndex + 2) != objPds.PageCount)
{
// next page link
sbPager.Append("<a href=\"");
sbPager.Append(BaseUrl);
sbPager.Append("&page=");
sbPager.Append(Convert.ToString(objPds.CurrentPageIndex + 2));
sbPager.Append("\">>></a> ");
}
// last page link
sbPager.Append("<a href=\"");
sbPager.Append(BaseUrl);
sbPager.Append("&page=");
sbPager.Append(objPds.PageCount.ToString());
sbPager.Append("\">>|</a>");
}
// conver the final links to a string and assign to labels
return sbPager.ToString();
}
dai un occhiata allo #651 o #445

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.