Problema con pagine datagrid

lunedì 18 agosto 2008 - 18.56

Gemini Profilo | Expert

Ciao a tutti,
ho inserito in una pagina un datagrid.
Ogni pagina visualizza 20 elementi.
Ho un problema con le pagine del datagrid.
mi visualizza bene le pagine da 1 a 11, ma quando clicco su 12 o su 20 o se provo a cliccare su '...' per andare nelle pagine da 21 in poi, o non fa nulla o ritorna alla prima pagina. Perchè?

<asp:datagrid id="dgPrenotazioni" runat="server" CssClass="testo" EnableViewState="False" autogeneratecolumns="False" HorizontalAlign="Center" Width="95%" AllowPaging="True" PageSize="20" AllowSorting="True">

Grazie mille

paoval72 Profilo | Senior Member

Ciao, puoi postare il codice con cui gestisci il cambio di pagina (il DataGrid_PageIndexChanged)?

PV

Gemini Profilo | Expert

ok, ti invio il codice:

private void LoadPrenotazioniList()
{
QuerySystem qs = new QuerySystem();
dgPrenotazioni.DataSource = qs.getPrenotazioniListDs();
dgPrenotazioni.DataBind();
qs.Disconnect();
}

private void InitializeComponent()
{
this.dgPrenotazioni.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.dgPrenotazioni_PageIndexChanged);
}

private void dgPrenotazioni_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
dgPrenotazioni.CurrentPageIndex = e.NewPageIndex;
LoadPrenotazioniList();
}

paoval72 Profilo | Senior Member

Dal codice html che hai postato non vedo la registrazione dell'evento OnPageIndexChanged. Dovrebbe essere:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra



PV

PS: mi sono accorto ora del problema. E' l'EnabledViewStat: l'ho tolto e mi funziona.

Gemini Profilo | Expert

Già provato, non è quello il problema.
Il problema non è che non richiama l'evento e che non funziona dalla 11 pagina in poi. Non fa nulla o torna alla pagina 1

paoval72 Profilo | Senior Member

Ti stresso ancora, ma la cosa m'incuriosisce, visto che dal codice che mi hai postato sembra tutto ok!
La chiamata alla classe QueryString che cosa ti restituisce?
Puoi postare anche la dichiarazione del pagerstyle?

PV

Gemini Profilo | Expert

Questo è il codice della query:

public DataSet getPrenotazioniListDs()
{
string theString = ("SELECT prenotazioni_tbl.* FROM prenotazioni_tbl order by prenotazioni_tbl.bookingcode asc");
return this.das.myDataAdapter (theString);
}

il pagestyle non l'ho inserito

paoval72 Profilo | Senior Member

In debug il valore del newpageindex è corretto quando passi ad esempio a pag. 12?
Se sì, come soluzione "tampone" potresti forzare un parametro Int (che corrisponde alla pagina attuale) alla funzione di caricamento, mentre si cerca la soluzione:

private void LoadPrenotazioniList(int paginaAttuale)
{
QuerySystem qs = new QuerySystem();
dgPrenotazioni.DataSource = qs.getPrenotazioniListDs();
dgPrenotazioni.CurrentPageIndex = paginaAttuale;
dgPrenotazioni.DataBind();
qs.Disconnect();
}

private void dgPrenotazioni_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
LoadPrenotazioniList(e.NewPageIndex);
}

Se la lanci anche nel Page_load, controlli al solito che non sia PostBack e gli passi l'indice 0.
Ti ripeto: a norma, con quello che mi hai postato, a me funziona.

Fammi sapere, tanto fino alle 16,30 sono qui.

PV

Gemini Profilo | Expert

Allora, quando clicco sulle pagine da 1 a 10 richiama l'evento dgPrenotazioni_PageIndexChanged, se clicco dalla pagina 11 in poi non richiama l'evento.
Esegue il page load, ma poi non fa più nulla.
Oppure se clicco su pagina 20 mi da e.NewPageIndex = 10

paoval72 Profilo | Senior Member

So che ti chiedo molto, ma a questo punto puoi postare tutta la pagina, sia lato server che lato client (qui dovrebbe bastare tutto il datagrid)?
Magari in 2 (o +,s e altri leggono) troviamo la soluzione.

PV

Gemini Profilo | Expert

Ecco il codice:

<%@ Page language="c#" Codebehind="PrenotazioniList.aspx.cs" AutoEventWireup="false" Inherits="Administrator.Prenotazioni.PrenotazioniList" %>
<HTML>
<body>
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5