Condividi tramite


Spostamento tra le pagine in un controllo server Web DetailsView

Aggiornamento: novembre 2007

Nel controllo DetailsView 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 DetailsView una pagina di dati corrisponde a una singola riga associata.

Funzionamento dello spostamento tra le pagine nel controllo DetailsView

Il controllo DetailsView supporta lo spostamento tra le pagine dei record presenti nella relativa origine dati. Per attivare lo spostamento tra le pagine, è possibile impostare la proprietà AllowPaging su true. La dimensione della pagina richiesta dal controllo DetailsView è sempre una riga.

Se il controllo DetailsView è 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 DetailsView ripete il processo, visualizzando un record diverso.

Nota:

Se l'origine dati non implementa l'interfaccia ICollection, il controllo DetailsView 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 DetailsView 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 DetailsView 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 l'ottenimento 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 DetailsView deve richiedere per recuperare una pagina di dati. Se il conteggio totale delle righe è fornito dall'oggetto dei dati di origine, il controllo DetailsView richiederà una sola riga alla volta per pagina. Se il conteggio totale delle righe non viene fornito, il controllo DetailsView 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 DetailsView 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 DetailsView quando la proprietà AllowPaging viene impostata su true. Il controllo DetailsView 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 DetailsView è impostata su una classe PagerSettings. È possibile personalizzare la modalità di spostamento tra le pagine impostando la proprietà Mode del controllo DetailsView su un valore PagerButtons. La modalità dell'interfaccia utente per lo spostamento tra le pagine può, ad esempio, essere personalizzata come illustrato di seguito:

DetailsView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast

Di seguito sono elencate le modalità disponibili:

Aspetto dei controlli per lo spostamento tra le pagine

Il controllo DetailsView 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 DetailsView 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 DetailsView su un valore TableItemStyle.

Modello per lo spostamento tra i dati

Se si imposta la proprietà AllowPaging del controllo DetailsView su true, al controllo DetailsView 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 DetailsView 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>DetailsView Example</title>
</head>
<body>
    <form id="form1" >
      <h3>DetailsView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:DetailsView ID="EmployeesDetailsView"
                DataSourceID="EmployeesSqlDataSource"
                AutoGenerateRows="false"
                AllowPaging="true"
                DataKeyNames="EmployeeID"     
                >

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

                <Fields>
                  <asp:BoundField Datafield="EmployeeID" HeaderText="Employee ID" ReadOnly="true"/>                    
                  <asp:BoundField Datafield="FirstName"  HeaderText="First Name"/>
                  <asp:BoundField Datafield="LastName"   HeaderText="Last Name"/>                    
                </Fields>

                <PagerSettings Mode="NextPreviousFirstLast"
                               FirstPageText="<<"
                               LastPageText=">>"
                               PageButtonCount="1"  
                               Position="Top"/> 
              </asp:DetailsView>

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

        <asp:SqlDataSource ID="EmployeesSqlDataSource" 
          SelectCommand="SELECT * FROM [Employees]" 
          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>DetailsView Example</title>
</head>
<body>
    <form id="form1" >
      <h3>DetailsView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:DetailsView ID="EmployeesDetailsView"
                DataSourceID="EmployeesSqlDataSource"
                AutoGenerateRows="false"
                AllowPaging="true"
                DataKeyNames="EmployeeID"     
                >

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

                <Fields>
                  <asp:BoundField Datafield="EmployeeID" HeaderText="Employee ID" ReadOnly="true"/>                    
                  <asp:BoundField Datafield="FirstName"  HeaderText="First Name"/>
                  <asp:BoundField Datafield="LastName"   HeaderText="Last Name"/>                    
                </Fields>

                <PagerSettings Mode="NextPreviousFirstLast"
                               FirstPageText="<<"
                               LastPageText=">>"
                               PageButtonCount="1"  
                               Position="Top"/> 
              </asp:DetailsView>

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

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

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

Vedere anche

Riferimenti

Informazioni generali sul controllo server Web DetailsView