sabato 7 giugno 2008

Asp.Net paginazione di un controllo gridView

Per il sito iprogrammatori http://www.iprogrammatori.it/articoli/programmazione/paginazione_controllo_gridview.asp



Figura 1


Introduzione:


In questo articolo, vedremo come applicare ad un controllo GridView (Asp.Net) la paginazione ed inserire nella prima colonna un pulsante per il rilevamento del dato della riga a cui si è fatto click. Si crea un nuovo progetto Web, inseriamo nella nuova pagina, un controllo gridView ed una label, l'aspetto dev'essere simile come mostrato in figura 1.


Fatto ciò si creano tre colonne per il controllo gridView, due di tipo boundfield ed una tipo buttonField


Di seguito è riportato il frammento di codice delle suddette operazioni.


<Columns>


<asp:ButtonField ButtonType="Button" CommandName="Seleziona" Text="Seleziona" />

<asp:BoundField DataField="Valore A" HeaderText="Valore A" />

<asp:BoundField DataField="Valore B" HeaderText="Valore B" />

<>Columns>

Impostare le proprietà del controllo GridView.


Per applicare la paginazione ad un controllo GridView, occorre impostare a true la proprietà "AllowPaging" del controllo, fatto ciò si imposta la proprietà EnabledSortingAndPagingCallBacks a true (figura 2), in questo modo ci permette di evitare di scrivere il codice per la gestione della paginazione, tale proprietà indica se deve essere eseguito il rendering dello script client per l'ordinamento e la paginazione ai client browser che supportano il callback. La proprietà pageSize, la impostiamo a 5, in questo modo avremo per ogni pagina 5 record.






Figura 2


A questo punto non ci resta, che scrivere nell'evento load della pagina, il codice per il caricamento dei dati nel controllo gridiview.


Di seguito si riporta il frammento di codice per il caricamento dei dati, il dataTable, verrà popolata con 15 righe.


VB.Net


Dim dtcColonnaA As New DataColumn("Valore A")

Dim dtcColonnaB As New DataColumn("Valore B")

Dim dttDati As New DataTable()

dttDati.Columns.Add(dtcColonnaA)


dttDati.Columns.Add(dtcColonnaB)


For conta As Integer = 1 To 15

Dim dtrRiga As DataRow = dttDati.NewRow()

dtrRiga(0) =

"Valore A di " & conta

dtrRiga(1) =

"Valore B di " & conta

dttDati.Rows.Add(dtrRiga)


Next

GridView1.DataSource = dttDati


GridView1.DataBind()



C#


DataColumn

dtcColonnaA = new DataColumn("Valore A");

DataColumn dtcColonnaB = new DataColumn("Valore B");

DataTable dttDati = new DataTable();

dttDati.Columns.Add(dtcColonnaA);


dttDati.Columns.Add(dtcColonnaB);


for (int conta = 1; conta < 16; conta++)

{


DataRow dtrRiga = dttDati.NewRow();

dtrRiga[0] =

"Valore A di " + conta;

dtrRiga[1] =

"Valore B di " + conta;

dttDati.Rows.Add(dtrRiga);


}


GridView1.DataSource = dttDati;


GridView1.DataBind();


A questo punto non ci resta che eseguire la nostra pagina.


Altri consigli.


Con il metodo precedente, si è visto come dotare il controllo gridiview,di paginazione, se nel caso, lasciamo la proprietà EnabledSortingAndPagingCallBacks a false, possiamo gestire la paginazione da codice, nel seguente modo.


Nell'evento PageIndexChanging, del controllo GridView, assegniamo alla proprietà PageIndex, del gridiview il valore della proprietà NewPageIndex della classe GridViewPageEventArgs .


Di seguito si riporta il codice, che permette di gestire la paginazione del controllo.


VB.Net


Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging

GridView1.PageIndex = e.NewPageIndex


GridView1.DataBind()


End Sub

C#


protected

void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)

{


GridView1.PageIndex = e.NewPageIndex;


GridView1.DataBind();


}


Il pulsante buttonField


Tramite il pulsante buttonField, possiamo aggiungere al controllo GridView, un pulsante di comando. Di seguito si riporta un esempio di codice, che al click di tale pulsante, imposta la proprietà Text del controllo label, con il valore della prima colonna (A) della riga a cui si è fatto click sul pulsante.


VB.Net


Protected

Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand

'Verifo che il pulsante a cui si è fatto click è quello giusto


If e.CommandName = "Seleziona" Then

Dim intRiga As Integer = CType(e.CommandArgument, Integer)

lbltesto.Text = GridView1.Rows(intRiga).Cells(1).Text


End If

End Sub



C#


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)

{


//Verifo che il pulsante a cui si è fatto click èquello giusto


if(e.CommandName == "Seleziona")

{


int riga = Convert.ToInt32(e.CommandArgument);

lbltesto.Text = GridView1.Rows[riga].Cells[1].Text;



}



}


Conclusioni:


In questo articolo, si è visto come applicare ad un controllo gridiview la paginazione senza scrivere un riga di codice, inoltre si è visto come aggiungere un pulsante di comando per rilevare determinati dati. Tramite la parola download è possibile scaricare il file di esempio.


Download

Nessun commento: