Condividi tramite


Spostamento tra le pagine in un controllo server Web FormView

Aggiornamento: novembre 2007

Nel controllo FormView ASP.NET è incorporato il supporto per consentire agli utenti di spostarsi tra i record uno alla volta. È inoltre possibile personalizzare l'interfaccia utente per lo spostamento tra le pagine. Nel controllo FormView una pagina di dati corrisponde a un singolo record associato.

Funzionamento dello spostamento tra le pagine nel controllo FormView

Il controllo FormView supporta lo spostamento tra le pagine degli elementi presenti nella relativa origine dati. Per attivare lo spostamento tra le pagine, è possibile impostare la proprietà AllowPaging su true. La dimensione della pagina per il controllo FormView è sempre una riga per pagina.

Se il controllo FormView è associato a un controllo origine dati oppure a una struttura di dati che implementa l'interfaccia ICollection, compresi i DataSet, otterrà tutti i record dall'origine dati e visualizzerà il record relativo alla pagina corrente, ignorando gli altri. Quando l'utente passa a una pagina diversa, il controllo FormView ripete il processo, visualizzando un record diverso.

Nota:

Se l'origine dati non implementa l'interfaccia ICollection, il controllo FormView non potrà consentire lo spostamento tra le pagine. Se, ad esempio, si utilizza un controllo SqlDataSource con la proprietà DataSourceMode impostata su DataReader, il controllo FormView non potrà implementare lo spostamento tra le pagine.

Alcune origini dati, ad esempio il controllo ObjectDataSource, offrono funzionalità più avanzate per lo spostamento tra le pagine. In questi casi il controllo FormView sfrutta le funzionalità più avanzate dell'origine dati per garantire flessibilità e prestazioni migliori durante lo spostamento tra le pagine. Il numero di righe richiesto può variare a seconda che l'origine dati supporti o meno il recupero del conteggio totale delle righe.

Nota:

Se si sta creando un'origine dati (ad esempio l'implementazione di un metodo SelectCountMethod nell'oggetto di origine per il controllo ObjectDataSource), è consigliabile che l'origine dati restituisca il conteggio totale delle righe quando fornisce le pagine di dati. Ciò contribuisce a ridurre il numero di record che il controllo FormView deve richiedere per recuperare una pagina di dati. Se il conteggio totale delle righe è fornito dall'oggetto dei dati di origine, il controllo FormView richiederà una sola riga alla volta per pagina. Se il conteggio totale delle righe non viene fornito, il controllo FormView deve richiedere tutte le righe dall'origine dati (a partire dalla riga che rappresenta la pagina di dati richiesta) e ignorare tutte le righe ad eccezione della riga visualizzata.

Personalizzazione delle impostazioni e dell'interfaccia utente per lo spostamento tra le pagine

L'interfaccia utente del controllo FormView per lo spostamento tra le pagine può essere personalizzata in diversi modi.

Modalità di spostamento tra le pagine

La proprietà PagerSettings consente di personalizzare l'aspetto dell'interfaccia utente per lo spostamento tra le pagine generata dal controllo FormView quando la proprietà AllowPaging viene impostata su true. Il controllo FormView può visualizzare sia controlli di direzione, che consentono agli utenti di spostarsi avanti e indietro tra le pagine, sia controlli numerici, che consentono di passare a una pagina specifica.

La proprietà PagerSettings del controllo FormView è impostata su una classe PagerSettings. È possibile personalizzare la modalità di spostamento tra le pagine impostando la proprietà Mode del controllo FormView su un valore PagerButtons. La modalità dell'interfaccia utente per lo spostamento tra le pagine può, ad esempio, essere personalizzata come illustrato di seguito:

FormView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast

Di seguito sono elencate le modalità disponibili:

Aspetto dei controlli per lo spostamento tra le pagine

Il controllo FormView dispone di numerose proprietà che consentono di personalizzare il testo e le immagini per diverse modalità di spostamento tra le pagine. Se, ad esempio, si imposta la modalità di spostamento tra le pagine di un controllo FormView su NextPrevious e si desidera personalizzare il testo visualizzato, è possibile impostare le proprietà NextPageText e PreviousPageText su valori personalizzati. Per impostazione predefinita, le proprietà PreviousPageText e NextPageText vengono impostate rispettivamente su "<" e ">".

Per personalizzare l'aspetto dei controlli per lo spostamento tra le pagine è possibile anche utilizzare immagini. La classe PagerSettings comprende proprietà per URL di immagini che possono essere associate ai pulsanti di comando che consentono di passare alla prima pagina, all'ultima, a quella precedente e a quella successiva.

Infine, è possibile controllare l'aspetto dei comandi per lo spostamento tra le pagine impostando la proprietà PagerStyle del controllo FormView su un valore TableItemStyle.

Modello per lo spostamento tra i dati

Se si imposta la proprietà AllowPaging del controllo FormView su true, al controllo FormView verranno aggiunti automaticamente i controlli dell'interfaccia utente per lo spostamento tra le pagine. È possibile personalizzare l'interfaccia aggiungendo un modello PagerTemplate. Per specificare l'operazione di spostamento da eseguire, aggiungere al modello un controllo Button, quindi impostare la proprietà CommandName su Page e la proprietà CommandArgument su uno dei seguenti valori:

  • First   Per passare alla prima pagina.

  • Last   Per passare all'ultima pagina.

  • Prev   Per passare alla pagina precedente.

  • Next   Per passare alla pagina successiva.

  • Un numero   Per indicare una pagina specifica.

Nell'esempio di codice riportato di seguito viene illustrato un controllo FormView configurato per consentire lo spostamento tra le pagine.

<%@ Page language="VB" %>
<!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 >
    <title>FormView Example</title>
</head>
<body>
    <form id="form1" >
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:FormView ID="ProductsFormView"
                DataSourceID="ProductsSqlDataSource"
                AllowPaging="true"
                >

                <HeaderStyle forecolor="white" backcolor="Blue" />                

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel"  Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel"  Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel"  Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel"  Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel"  Text='<%# Eval("UnitPrice") %>' /></td>
                    </tr>
                  </table>                 
                </ItemTemplate>

                <PagerTemplate>
                  <table>
                    <tr>
                      <td><asp:LinkButton ID="FirstButton" CommandName="Page" CommandArgument="First" Text="<<" RunAt="server"/></td>
                      <td><asp:LinkButton ID="PrevButton"  CommandName="Page" CommandArgument="Prev"  Text="<"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="NextButton"  CommandName="Page" CommandArgument="Next"  Text=">"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="LastButton"  CommandName="Page" CommandArgument="Last"  Text=">>" RunAt="server"/></td>
                    </tr>
                  </table>
                </PagerTemplate>

              </asp:FormView>

            </td>
          </tr>
        </table>

        <asp:SqlDataSource ID="ProductsSqlDataSource" 
          SelectCommand="SELECT * FROM [Products]" 
          connectionstring="<%$ ConnectionStrings:NorthwindConnection %>" 
          RunAt="server"/>

      </form>
  </body>
</html>
<%@ Page language="C#" %>
<!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 >
    <title>FormView Example</title>
</head>
<body>
    <form id="form1" >
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:FormView ID="ProductsFormView"
                DataSourceID="ProductsSqlDataSource"
                AllowPaging="true"
                >

                <HeaderStyle forecolor="white" backcolor="Blue" />                

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel"  Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel"  Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel"  Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel"  Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel"  Text='<%# Eval("UnitPrice") %>' /></td>
                    </tr>
                  </table>                 
                </ItemTemplate>

                <PagerTemplate>
                  <table>
                    <tr>
                      <td><asp:LinkButton ID="FirstButton" CommandName="Page" CommandArgument="First" Text="<<" RunAt="server"/></td>
                      <td><asp:LinkButton ID="PrevButton"  CommandName="Page" CommandArgument="Prev"  Text="<"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="NextButton"  CommandName="Page" CommandArgument="Next"  Text=">"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="LastButton"  CommandName="Page" CommandArgument="Last"  Text=">>" RunAt="server"/></td>
                    </tr>
                  </table>
                </PagerTemplate>

              </asp:FormView>

            </td>
          </tr>
        </table>

        <asp:SqlDataSource ID="ProductsSqlDataSource" 
          SelectCommand="SELECT ProductID, ProductName, CategoryID, QuantityPerUnit, UnitPrice FROM [Products]" 
          connectionstring="<%$ ConnectionStrings:NorthwindConnection %>" 
          RunAt="server"/>

      </form>
  </body>
</html>

Vedere anche

Concetti

Cenni preliminari sul controllo server Web FormView