using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Collections; using System.Drawing; public partial class _Default : System.Web.UI.Page { private Button btn = new Button(); private TextBox tbPaginaScelta = new TextBox(); protected void Page_Load(object sender, EventArgs e) { } protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Pager) { Int32 larghezzaContenitoriCella0 = 10; Int32 larghezzaCelleContenitori = 15; Int32 altezzaCella = 20; Int32 numTotPagine = GridView1.PageCount; Int32 paginaAttuale = GridView1.PageIndex; Int32 numPagineSelezionabili = 3; //Stabilisco il range delle pagine selezionabili Int32 range = ((Int32)(paginaAttuale / numPagineSelezionabili)); Int32 startPage = range * numPagineSelezionabili; LinkButton PrimaLb = new LinkButton(); PrimaLb.CommandName = "Page"; PrimaLb.CommandArgument = "First"; PrimaLb.ForeColor = System.Drawing.Color.Blue; PrimaLb.Text = "<<"; PrimaLb.ToolTip = "Prima pagina"; PrimaLb.Width = larghezzaContenitoriCella0; //se non sono sulla prima pagina mostro precedente e prima Label Prima = new Label(); if (GridView1.PageIndex > 0) { PrimaLb.Enabled = true; Prima.CssClass = "paginazioneNumPag"; } else { PrimaLb.Enabled = false; PrimaLb.CssClass = "paginazioneNumPag"; } Prima.Controls.Add(PrimaLb); LinkButton PrecedenteLb = new LinkButton(); PrecedenteLb.CommandName = "Page"; PrecedenteLb.CommandArgument = "Prev"; PrecedenteLb.ForeColor = System.Drawing.Color.Blue; PrecedenteLb.Text = "<"; PrecedenteLb.ToolTip = "Precedente"; PrecedenteLb.Width = larghezzaContenitoriCella0; Label Precedente = new Label(); if (GridView1.PageIndex > 0) { PrecedenteLb.Enabled = true; Precedente.CssClass = "paginazioneNumPag"; } else { PrecedenteLb.Enabled = false; PrecedenteLb.CssClass = "paginazioneNumPag"; } Precedente.Controls.Add(PrecedenteLb); LinkButton SuccessivoLb = new LinkButton(); SuccessivoLb.CommandName = "Page"; SuccessivoLb.CommandArgument = "Next"; SuccessivoLb.ForeColor = System.Drawing.Color.Blue; SuccessivoLb.Text = ">"; SuccessivoLb.ToolTip = "Successiva"; SuccessivoLb.Width = larghezzaContenitoriCella0; Label Successivo = new Label(); if ((GridView1.PageIndex + 1) < GridView1.PageCount) { SuccessivoLb.Enabled = true; Successivo.CssClass = "paginazioneNumPag"; } else { SuccessivoLb.Enabled = false; SuccessivoLb.CssClass = "paginazioneNumPag"; } Successivo.Controls.Add(SuccessivoLb); LinkButton UltimaLb = new LinkButton(); UltimaLb.CommandName = "Page"; UltimaLb.CommandArgument = "Last"; UltimaLb.ForeColor = System.Drawing.Color.Blue; UltimaLb.Text = ">>"; UltimaLb.ToolTip = "Ultima pagina"; UltimaLb.Width = larghezzaContenitoriCella0; Label Ultima = new Label(); if ((GridView1.PageIndex + 1) < GridView1.PageCount) { UltimaLb.Enabled = true; Ultima.CssClass = "paginazioneNumPag"; } else { UltimaLb.Enabled = false; UltimaLb.CssClass = "paginazioneNumPag"; } Ultima.Controls.Add(UltimaLb); //recupero la tabella del pager Table pager = e.Row.Cells[0].Controls[0] as Table; if (pager != null) { //La prima cella contiene i simboli (<< < > >>) TableRow tableRowSimboli = new TableRow(); TableCell cellSimboli0 = new TableCell(); cellSimboli0.Controls.Add(Prima); cellSimboli0.Controls.Add(new LiteralControl(" ")); tableRowSimboli.Cells.Add(cellSimboli0); TableCell cellSimboli1 = new TableCell(); cellSimboli1.Controls.Add(Precedente); cellSimboli1.Controls.Add(new LiteralControl(" ")); cellSimboli1.Controls.Add(new LiteralControl(" ")); tableRowSimboli.Cells.Add(cellSimboli1); TableCell cellSimboli2 = new TableCell(); cellSimboli2.Controls.Add(Successivo); cellSimboli2.Controls.Add(new LiteralControl(" ")); tableRowSimboli.Cells.Add(cellSimboli2); TableCell cellSimboli3 = new TableCell(); cellSimboli3.Controls.Add(Ultima); cellSimboli3.Controls.Add(new LiteralControl(" ")); tableRowSimboli.Cells.Add(cellSimboli3); Table tableSimboli = new Table(); tableSimboli.Rows.Add(tableRowSimboli); TableCell cell0 = new TableCell(); cell0.VerticalAlign = VerticalAlign.Middle; cell0.BackColor = Color.White; cell0.Height = (Unit)altezzaCella; cell0.HorizontalAlign = HorizontalAlign.Center; cell0.Controls.Add(tableSimboli); cell0.Width = (Unit)50; //La seconda cella contiene i numeri CELL TableCell cell = new TableCell(); cell.VerticalAlign = VerticalAlign.Middle; cell.BackColor = Color.White; cell.Height = (Unit)altezzaCella; cell.HorizontalAlign = HorizontalAlign.Center; Table tableNumeriPag = new Table(); TableRow tableRowNumeriPag = new TableRow(); for (int i = 1; i <= numPagineSelezionabili; i++) { TableCell tableCellNumeriPag = new TableCell(); Int32 numPagina = startPage + i; if (numPagina != (GridView1.PageIndex + 1)) { Label lblContenitore = new Label(); lblContenitore.CssClass = "paginazioneNumPag"; LinkButton bt = new LinkButton(); bt.Text = "[" + numPagina + "] "; bt.CommandName = "Page"; bt.CommandArgument = numPagina.ToString(); lblContenitore.Controls.Add(bt); lblContenitore.Width = larghezzaCelleContenitori; tableCellNumeriPag.Controls.Add(lblContenitore); } else { Label lbl = new Label(); lbl.Text = " " + numPagina + " "; lbl.CssClass = "paginazionePagSel"; lbl.Width = larghezzaCelleContenitori; tableCellNumeriPag.Controls.Add(lbl); } tableRowNumeriPag.Cells.Add(tableCellNumeriPag); if (numPagina == numTotPagine) { break; } } tableNumeriPag.Rows.Add(tableRowNumeriPag); cell.Controls.Add(tableNumeriPag); //terza cella TableRow trTableScelta = new TableRow(); TableCell cell1TableScelta = new TableCell(); LiteralControl lc = new LiteralControl("Pag "); cell1TableScelta.Controls.Add(lc); trTableScelta.Cells.Add(cell1TableScelta); TableCell cell2TableScelta = new TableCell(); tbPaginaScelta.Text = Convert.ToString((GridView1.PageIndex + 1)); tbPaginaScelta.Width = (Unit)30; tbPaginaScelta.MaxLength = 10; tbPaginaScelta.CssClass = "testo"; cell2TableScelta.Controls.Add(tbPaginaScelta); trTableScelta.Cells.Add(cell2TableScelta); TableCell cell3TableScelta = new TableCell(); LiteralControl lc3 = new LiteralControl("/"); cell3TableScelta.Controls.Add(lc3); cell3TableScelta.CssClass = "testo"; trTableScelta.Cells.Add(cell3TableScelta); TableCell cell4TableScelta = new TableCell(); LiteralControl lc4 = new LiteralControl(GridView1.PageCount.ToString()); cell4TableScelta.Controls.Add(lc4); cell4TableScelta.CssClass = "testo"; trTableScelta.Cells.Add(cell4TableScelta); TableCell cell5TableScelta = new TableCell(); btn.ID = "btnGo"; btn.Text = "GO"; btn.ToolTip = "go to page"; btn.CssClass = "testo"; btn.Click += new EventHandler(btn_Click); cell5TableScelta.Controls.Add(btn); trTableScelta.Cells.Add(cell5TableScelta); Table tbSceltaPagina = new Table(); tbSceltaPagina.Rows.Add(trTableScelta); TableCell cell1 = new TableCell(); cell1.Controls.Add(tbSceltaPagina); cell1.CssClass = "testo"; //Costruisco la tabella del Pager Table table = new Table(); table.Style.Add("width", "100%"); table.CellPadding = 5; table.CellSpacing = 0; TableRow tableRow = new TableRow(); tableRow.Cells.Add(cell0); cell.Style.Add("width", "100%"); tableRow.Cells.Add(cell); tableRow.Cells.Add(cell1); table.Rows.Add(tableRow); e.Row.Cells[0].Controls.Remove(pager); e.Row.Cells[0].Controls.Add(table); } } } void btn_Click(object sender, EventArgs e) { try { String sPaginaScelta = tbPaginaScelta.Text; Int32 paginaScelta = Convert.ToInt32(sPaginaScelta); GridView1.PageIndex = paginaScelta - 1; } catch { tbPaginaScelta.Text = Convert.ToString(GridView1.PageIndex + 1); } } }
<List> <Student ID="1" Nome="Carmine" Cognome="Pacifico" /> <Student ID="2" Nome="Mario" Cognome="Rossi" /> <Student ID="3" Nome="Carlo" Cognome="Bianchi" /> <Student ID="4" Nome="Michele" Cognome="Russo" /> <Student ID="5" Nome="Rosa" Cognome="Rossa" /> <Student ID="6" Nome="Anna" Cognome="Sara" /> <Student ID="7" Nome="Gianni" Cognome="Miro" /> <Student ID="8" Nome="Emilio" Cognome="Sasa" /> <Student ID="9" Nome="Arianna" Cognome="Ara" /> </List>