25 messaggi dal 23 gennaio 2006
Come faccio per impostare un "PagerSettings Mode" di una GridView in modo che mi vengano mostrati i numeri e il tasto pagina successiva e precedente (più o meno così com'è la paginazione del forum)
Lavorando solo con le proprietà non puoi. Fallo numeric, poi intercetta l'evento RowCreated così da andare a modicare la cella quando il Row.RowType è il Pager.
Inserisci da codice due LinkButton con CommandName a "Page" e CommandArgument a "Next" o "Prev" o "First" o "Last" a seconda di quello che vuoi fargli fare

Ciao

Il mio blog
Homepage
25 messaggi dal 23 gennaio 2006
Grazie per il suggerimento. Riporto l'implementazione dell'evento RowCreated per chi si trovasse nello stessa situazione.
Carmine Pacifico

protected void GridViewClienti_RowCreated(object sender, GridViewRowEventArgs e)
{
LinkButton Prima = new LinkButton();
Prima.CommandName = "Page";
Prima.CommandArgument = "First";
Prima.ForeColor = System.Drawing.Color.White;
Prima.Text = "<<";
Prima.ToolTip = "Prima pagina";

LinkButton Precedente = new LinkButton();
Precedente.CommandName = "Page";
Precedente.CommandArgument = "Prev";
Precedente.ForeColor = System.Drawing.Color.White;
Precedente.Text = "<";
Precedente.ToolTip = "Precedente";

LinkButton Successivo = new LinkButton();
Successivo.CommandName = "Page";
Successivo.CommandArgument = "Next";
Successivo.ForeColor = System.Drawing.Color.White;
Successivo.Text = ">";
Successivo.ToolTip = "Successiva";

LinkButton Ultima = new LinkButton();
Ultima.CommandName = "Page";
Ultima.CommandArgument = "Last";
Ultima.ForeColor = System.Drawing.Color.White;
Ultima.Text = ">>";
Ultima.ToolTip = "Ultima pagina";


if (e.Row.RowType == DataControlRowType.Pager)
{

TableCell cell = e.Row.Cells[0];
Table pager = cell.Controls[0] as Table;
if (pager != null)
{
ArrayList lst = new ArrayList();


foreach (TableCell c in pager.Controls[0].Controls)
{
Control aux = c.Controls[0];
Label spazio = new Label();
spazio.Text = " ";


if (aux is LinkButton)
{
LinkButton bt = aux as LinkButton;
if (!string.Equals(bt.Text, "..."))
{
bt.Text = "[" + bt.Text + "]";
}
lst.Add(bt);
lst.Add(spazio);
}
else
{
Label lbl = aux as Label;
lbl.Text = " " + lbl.Text+ " ";
lst.Add(lbl);
}
}
cell.Controls.Remove(pager);
foreach (Control ctl in lst)
{
cell.Controls.Add(ctl);
}
}


//se non sono sulla prima pagina mostro precedente e prima
if (GridViewClienti.PageIndex > 0)
{

e.Row.Cells[0].Controls.AddAt(0, Prima);
e.Row.Cells[0].Controls.AddAt(1,new LiteralControl(" "));
e.Row.Cells[0].Controls.AddAt(2, Precedente);
e.Row.Cells[0].Controls.AddAt(3, new LiteralControl(" "));
}


//se non sono sull'ultima pagina mostro successivo ed ultima
if ((GridViewClienti.PageIndex + 1) < GridViewClienti.PageCount)
{
e.Row.Cells[0].Controls.Add(new LiteralControl(" "));
e.Row.Cells[0].Controls.Add(Successivo);
e.Row.Cells[0].Controls.Add(new LiteralControl(" "));
e.Row.Cells[0].Controls.Add(Ultima);
}

}
}
3 messaggi dal 20 agosto 2004
Ho provato la soluzione descritta, ma mi da il seguente errore

Impossibile eseguire il cast di oggetti di tipo 'System.Web.UI.WebControls.ContentPlaceHolder' sul tipo 'System.Web.UI.WebControls.WebControl'.

che credo sia causato quando eseguo l'aggiunta del linkbutton che erano resenti nel Pager.
se infatti faccio l'aggiunta delle label e dei linkbutton per pagina precedente e successiva e alla prima e all'ultima non ho nessun problema.
3 messaggi dal 20 agosto 2004
Ho risolto poi in questo modo

if (e.Row.RowType == DataControlRowType.Pager)
{

TableCell cell = e.Row.Cells[0];
Table pager = cell.Controls[0] as Table;
Label spazio = new Label();
spazio.Text = " ";
ArrayList lst = new ArrayList();
if (pager != null)
{
foreach (TableCell c in pager.Controls[0].Controls)
{
Control aux = c.Controls[0];
if (aux is LinkButton)
{
LinkButton t = aux as LinkButton;
LinkButton bt = new LinkButton();
if (!string.Equals(bt.Text, "..."))
{
bt.Text = "[" + t.Text + "]";
bt.CommandName = t.CommandName;
bt.CommandArgument = t.CommandArgument;
bt.ToolTip = "Vai a pagina " + t.Text;
}
lst.Add(bt);
lst.Add(spazio);
}
else
{
Label lbl = aux as Label;
lbl.Text = " " + lbl.Text + " ";
lbl.Font.Bold = true;
lst.Add(lbl);
}
}
cell.Controls.Remove(pager);
}
124 messaggi dal 21 luglio 2001
Ciao xmaui,
Ho riscontrato lo stesso tuo problema con il codice di PacificoC, ma non riesco a far funzionare il tuo nel senso che i vari LinkButton mi vengono ripetuti per tutta la pagina e cmq i collegamenti alla pagina "successiva" o "precedente" non mi funzionano.

A te funziona tutto bene??

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.