Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Paginare una Grid View da codice.
martedì 25 dicembre 2007 - 09.21
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
tempista
Profilo
| Newbie
13
messaggi | Data Invio:
mar 25 dic 2007 - 09:21
Buongioeno sto cercando di migrare da Classic Asp ad Asp.Net con C# ed ho il seguente problema, cioè non riesco a paginare se clicco sui numerini per passare alla pagina successiva ricevo un errore :
'System.EventArgs' non contiene una definizione per 'NewPageIndex'.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="clienti.aspx.cs" Inherits="clienti" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Clienti</title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
</asp:GridView>
</form>
</body>
</html>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class clienti : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strConnection = ConfigurationManager.ConnectionStrings["connessione"].ConnectionString;
DataTable tabella = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter("select * from [Dettagli ordini]", strConnection);
adapter.Fill(tabella);
GridView1.DataSource = tabella;
GridView1.AllowPaging = true;
GridView1.AllowSorting = true;
GridView1.PageSize = 5;
GridView1.AlternatingRowStyle.BackColor = System.Drawing.Color.Bisque;
GridView1.DataBind();
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
}
Anticipatamente grazie, e Buon Natale a TUTTI!!!!! ;-)
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
lun 7 gen 2008 - 23:46
ciao,
forse ti sei sbagliato con gli eventi, quello che serve a te è "PageIndexChanging" :
protected void grid_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
dove hai e.NewPageIndex dato che "e" è di tipo GridViewPageEventArgs...
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
tempista
Profilo
| Newbie
13
messaggi | Data Invio:
mar 8 gen 2008 - 11:23
Ciao Matteo e grazie per la risposta, gentilissimo.
Ho seguito i tuo consiglio ma ricevo ugualmente l'errore è ovvio che sbaglio ancora qualcosa..
In ogni modo ho provato ad aggungere "GridView1.EnableSortingAndPagingCallbacks = true;" e tutto funziona.
Ma che differenza c'è fra come mi hai indicato tu e il codice che sto utilizzando adesso?
Sto cercando mi grare ma, non è semplice... Con Classic Asp era veramente facile fare cose.. sigh sigh...
Anticipatamente grazie.
using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class clienti : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strConnection = ConfigurationManager.ConnectionStrings["connessione"].ConnectionString;
OleDbDataAdapter adapter = new OleDbDataAdapter("select * from [Dettagli_ordini]", strConnection);
DataTable tabella = new DataTable();
adapter.Fill(tabella);
GridView1.DataSource = tabella;
GridView1.AllowPaging = true;
GridView1.PageSize = 10;
GridView1.EnableSortingAndPagingCallbacks = true;
GridView1.AlternatingRowStyle.BackColor = System.Drawing.Color.Bisque;
GridView1.AutoGenerateColumns = true;
GridView1.DataBind();
}
}
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
mar 8 gen 2008 - 20:39
ciao,
quello che pensavo io era che tu volessi gestirti l'evento di cambio pagina per qualche motivo tuo.
Usando "EnableSortingAndPagingCallbacks" praticamente la griglia renderizza uno script lato client che richiama il Load della pagina e poi fa fare tutto "dietro alle quinte" la pagina, o l'ordinamento.
Diciamo che sarebbe una sorta di "updatePanel" di ajax, gia' presente di default nelle griglie, che come tutti sanno hanno da sempre, problemi (soprattutto nel web) di visualizzazione di grosse masse di dati.
Il tutto succede senza mettere questa proprieta', se hai una DataSource agganciata alla griglia (tramite proprieta' DataSourceID)
Quindi il tuo processo non è sbagliato, ti semplifica la vita per il fatto di avere tutto gia' fatto e per moli non troppo consistenti di dati è la scelta piu' giusta....il problema è nei grandi numeri, nel senso che la paginazione della griglia in automatico (con o senza datasourceId diciamo) è fatta dopo che cmq sul server ha fatto la query per tutti i dati.
Il fatto va valutato sul campo, se i tempi sono accettabili, è giusto cosi', altrimenti devi controllare "IsPostBack" nel load, e farti il caricamento della fascia di record che ti servono nell'evento "PAgeIndexChanged" e "sorting", in modo da fare una query "mirata"...
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
tempista
Profilo
| Newbie
13
messaggi | Data Invio:
mer 9 gen 2008 - 20:33
Ciao Freeteo,
più esauriente di così, non potevi essere... Grazie infinite, tutto chiaro!
Diciamo che mi piacerebbe poter gestire il tutto da codice, perchè non mi piacciono le procedure automatiche di Visual Studio.
Stavo cercando di costruire una paginazione come si faceva in asp passando i parametri tramite QueryString.
Dove posso trovare un esempio di paginazione da codice con Paginazione e Ordinamento?
Buona serata,
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
mer 9 gen 2008 - 21:47
ciao,
paginazioni gia' fatte non ne conosco, io mi ero implementato al tempo una bella query cge faceva da sola la "finestra di dati", pero' era alquanto incasinata, e adesso con sql 2005 che ha il "ROW_NUMBER" diventa piu' semplice da fare.
Dipende quindi dal tuo db, non ti resta che cercare in internet, ci sono degli esempi tipo questi:
http://weblogs.asp.net/scottgu/archive/2006/01/01/434314.aspx
http://www.oracle.com/technology/oramag/oracle/07-jan/o17asktom.html
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
tempista
Profilo
| Newbie
13
messaggi | Data Invio:
gio 10 gen 2008 - 12:35
Ricevuto, grazie!!!
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
gio 10 gen 2008 - 19:30
ok perfetto!
ma hai risolto? se si accetta una risposta cosi' chiudiamo il thread.
Grazie
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
tempista
Profilo
| Newbie
13
messaggi | Data Invio:
gio 10 gen 2008 - 20:46
Si, nel senso che ho appreso i concetti e conosciuto i miei limiti, pertanto ho contattato un professionista per delle lezioni... Ha ha ha ha ha ha
Grazie ancora, sei un MAGO!!!
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
gio 10 gen 2008 - 23:14
>Si, nel senso che ho appreso i concetti e conosciuto i miei limiti,
>pertanto ho contattato un rofessionista per delle lezioni...
>Ha ha ha ha ha ha
ROTFL
>Grazie ancora, sei un MAGO!!!
ahahah grazie
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
Torna su
Stanze Forum
Elenco Threads
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 !