Supporto per l'impaginazione

Nei dispositivi senza fili vengono utilizzati schermi con funzionalità assai diverse tra di loro. In alcuni schermi è possibile visualizzare i contenuti in maniera molto dettagliata. In altri schermi, invece, è possibile visualizzare solo alcune righe di testo monocromatico. Spesso il contenuto per schermi con funzionalità ridotte deve essere impaginato per ottenerne una visualizzazione corretta. I controlli mobili ASP.NET consentono all'applicazione di impaginare automaticamente i form in pagine che il dispositivo di destinazione è in grado di visualizzare. In questa sezione viene descritto il contributo dei controlli mobili al processo di impaginazione.

Informazioni sul sistema di pesatura per l'impaginazione

Il processo di impaginazione dei form si basa su un sistema di pesatura. Mediante la proprietà OptimumPageWeight ciascun adattatore di pagina restituisce il peso ottimale delle pagine di un form.

Un set di adattatori di dispositivo è in grado di fornire i pesi ottimali per ciascuna pagina e ciascun controllo. La scelta delle unità da adottare per tali pesi è flessibile. Sebbene sia possibile coordinare una convenzione appropriata per le unità di peso, attenendosi al sistema di unità predefinito è possibile utilizzare i pesi predefiniti dei controlli per un set di adattatori di dispositivo.

Nota   Il sistema di unità predefinito si basa su una riga pari a 100 unità, come indicato dalla costante DefaultWeight della classe ControlPager.

Durante l'impaginazione, in ASP.NET viene scorsa la struttura dei controlli al fine di calcolare i pesi e assegnare i numeri di pagina. Dopo l'esecuzione del rendering della pagina corrente, viene eseguita l'impaginazione appropriata. È possibile determinare la pagina o le pagine assegnate a un controllo utilizzando le proprietà FirstPage e LastPage.

L'algoritmo di impaginazione prende in considerazione l'impostazione del controllo che ne impedisce l'impaginazione in più pagine. È ad esempio opportuno evitare di suddividere in più pagine il sommario di un controllo Panel. A tal fine, eseguire l'override della proprietà PaginateChildren durante l'implementazione del controllo e far restituire false.

Supporto per l'impaginazione di base

Per garantire che l'impaginazione risulti appropriata, è necessario che un controllo esegua l'override della proprietà VisibleWeight e restituisca un peso. Il peso predefinito è pari a 100, che corrisponde a una riga nel sistema di unità predefinito.

In alternativa, se si desidera che il peso del controllo sia specifico del dispositivo, l'adattatore del controllo può eseguire l'override della proprietà VisibleWeight utilizzando il valore appropriato per un determinato dispositivo. L'implementazione della classe base MobileControl della proprietà VisibleWeight consente di recuperare tale valore dall'adattatore di dispositivo.

Progettazione dell'impaginazione interna e personalizzata

Alcuni controlli utilizzano l'impaginazione per suddividere il contenuto dei controlli in più pagine di form, anche quando non sono inclusi controlli figlio. Un controllo List contenente un gran numero di elementi può ad esempio essere impaginato in più pagine di form. Questa operazione viene denominata impaginazione interna. I controlli in cui è disponibile tale funzione sono in grado di eseguire anche l'impaginazione personalizzata. Quest'ultima rende disponibile una funzione di callback all'applicazione che le consente di fornire su richiesta i dati necessari al controllo e di raggruppare i dati correlati.

Per supportare l'impaginazione interna e quella personalizzata, un controllo deve ereditare dalla classe PagedControl. Nella procedura descritta di seguito viene illustrato come definire il supporto per l'impaginazione.

Per supportare l'impaginazione interna e quella personalizzata

  1. Eseguire l'override della proprietà ItemWeight e far restituire il peso approssimativo di ciascun elemento. Il valore predefinito è pari a 100, come indicato dalla costante DefaultWeight della classe ControlPager. Il peso predefinito corrisponde a una riga nel sistema di unità predefinito.

    In alternativa, se si desidera utilizzare il peso dell'elemento specifico al dispositivo, l'adattatore del controllo è in grado di eseguire l'override della proprietà ItemWeight dell'interfaccia IControlAdapter. Mediante l'implementazione della classe base PagedControl della proprietà ItemWeight è possibile verificare se l'adattatore del controllo supporta l'interfaccia IControlAdapter e far restituire il peso dell'elemento.

  2. Durante il rendering, chiamare i metodi FirstVisibleItemIndex e VisibleItemCount per determinare rispettivamente il primo elemento e i numeri di elementi di cui eseguire il rendering.

Poiché il controllo eredita dalla classe PagedControl, espone automaticamente l'API standard per l'impaginazione personalizzata, che è costituita dalla proprietà ItemCount, dall'evento LoadItems e dal metodo OnLoadItems.

Come impedire l'impaginazione

L'impaginazione comporta la suddivisione del contenuto dei controlli in più pagine. In alcuni casi,può rendersi necessario impedire tale operazione. È ad esempio opportuno impedire l'impaginazione di un controllo Panel. Infatti, per impostazione predefinita, la proprietà Paginate del controllo Panel è impostata su false.

Sezioni correlate

Aggiunta di nuovi adattatori di dispositivo e supporto per dispositivi