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.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC