Salve ragazzi,
ho un problema sulla paginazione di un datalist.
Praticamente quando mi trovo all'inizio o alla fine dei record per andare rispettivamente avanti e indietro al primo clic mi viene ricaricata la pagina e basta mentre poi facendo un secondo clic sulle freccette passo al record successivo o precedente.
Nella navigazione dei record intermedi non ho nessun problema al primo clic visualizzo la pagina successiva o precedente.
Vi posto il codice perchè non riescoe a capire il problema:
Questi invece sono i due datalist.codice:<!DOCTYPE html> <%@ Page Language="C#"%> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <script language="c#" runat="server"> void Page_Load(Object sender, EventArgs e){ String ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("database/xxxxx.mdb"); OleDbConnection cn = new OleDbConnection(ConnString); //Apro la connessione; cn.Open(); //Data adapter OleDbDataAdapter objAdapter = new OleDbDataAdapter("SELECT * FROM News", cn); //Creo il dataset per la tabella news sulla sx DataSet ds = new DataSet(); //Creo il dataset per la tabella sezione news DataSet dsTbNews = new DataSet(); //Lo riempio //Calcolo i record da estrarre e riempio il dataset int startRecord = (int.Parse(Pagina.Value)-1)*int.Parse(Record_Max.Value); objAdapter.Fill(ds, startRecord, int.Parse(Record_Max.Value), "News"); //Lo riempio //Calcolo i record da estrarre e riempio il dataset della tabella sezione News int startRecordTbNews = (int.Parse(PaginaTbNews.Value)-1)*int.Parse(Record_MaxTbNews.Value); objAdapter.Fill(dsTbNews, startRecordTbNews, int.Parse(Record_MaxTbNews.Value), "News"); Grid.DataSource = ds.Tables[0].DefaultView; Grid.DataBind(); GridTbNews.DataSource = dsTbNews.Tables[0].DefaultView; GridTbNews.DataBind(); cn.Close(); //Conta i numero di record Totali OleDbCommand myCmd = new OleDbCommand("SELECT Count(*) FROM News", cn); cn.Open(); Record_Tot.Value = myCmd.ExecuteScalar().ToString(); Record_TotTbNews.Value = myCmd.ExecuteScalar().ToString(); cn.Close(); Grid.DataBind(); GridTbNews.DataBind(); //Controllo i Link if((int.Parse(PaginaTbNews.Value)-1)<=0){ Prev.Enabled = false; } else{ Prev.Enabled = true ; } if((int.Parse(PaginaTbNews.Value)*int.Parse(Record_MaxTbNews.Value))>=int.Parse(Record_TotTbNews.Value)) Next.Enabled = false; else Next.Enabled = true ; } //Controlla che link ha sollevato l'evento e aumenta o diminuisce la pagina corrente public void Paginazione(object sender, EventArgs e){ if(((LinkButton)sender).ID=="Prev"){ if((int.Parse(PaginaTbNews.Value)-1)>=0){ PaginaTbNews.Value = (int.Parse(PaginaTbNews.Value)-1).ToString() ; } } else if(((LinkButton)sender).ID=="Next"){ if((int.Parse(PaginaTbNews.Value)*int.Parse(Record_MaxTbNews.Value))<int.Parse(Record_TotTbNews.Value)){ PaginaTbNews.Value = (int.Parse(PaginaTbNews.Value)+1).ToString() ; } } } </script>
Il primo ha un'elenco limitato a tre news ma senza paginazione.
Il secondo ha sempre un'elenco di tre news ma con la paginazione.
Il secondocodice:<input type="hidden" id="Record_Max" value="3" runat="server"> <input type="hidden" id="Pagina" value="1" runat="server"> <input type="hidden" id="Record_Tot" runat="server"> <asp:DataList id="Grid" runat="server" CellPadding="0" RepeatLayout="Flow"> <ItemTemplate> "><%#DataBinder.Eval(Container.DataItem,"Titolo") %> </ItemTemplate> </ASP:DataList>
Da cosa potrebbe dipendere?codice:<input type="hidden" id="Record_MaxTbNews" value="2" runat="server"> <input type="hidden" id="PaginaTbNews" value="1" runat="server"> <input type="hidden" id="Record_TotTbNews" runat="server"> <asp:DataList id="GridTbNews" runat="server" CellPadding="0" RepeatLayout="Flow"> <ItemTemplate> "><%#DataBinder.Eval(Container.DataItem,"Titolo") %> </ItemTemplate> </ASP:DataList> <asp:LinkButton id="Prev" Text="Prec." OnClick="Paginazione" runat="server" Visible="True" /> <asp:LinkButton id="Next" Text="Succ." OnClick="Paginazione" runat="server" Visible="True" />
Buona giornata.![]()

Rispondi quotando