Back to top

Autore Topic: Un alternativa per gestire dati tabellari  (Letto 2426 volte)

mau_develop

  • Visitatore
Un alternativa per gestire dati tabellari
« il: 19 Giu 2011, 21:28:50 »
Tempo fa qualcuno accennò a questo plugin JQuery, mi ero creato un bookmark e ora ho avuto occasione di testarlo... che dire... eccezionale.
Joomla usa il grid, che per l'amordiddio ha anche il suo senso... ma non sempre.
Con qs plugin potete realizzare in 5 minuti e con poche righe di codice componenti e moduli per la visualizzazione di dati tabellari, inclusa l'impaginazione, la ricerca testuale, le righe visualizzate e molte altre opzioni che potete sperimentare leggendo il manualetto sul sito dello sviluppatore.
L'inserimento nell'mvc di joomla è banale per cui non sto quì a creare righe su righe... il controller gestisce la richiesta, il model fornisce il recupero dei dati  e li unisce alla wiev, ed è di questa che ci occuperemo.

Innanzitutto il plugin si trova quì: http://www.datatables.net/
Già dall'home vi rendete conto la versatilità di qs strumento. Scaricatelo (zip vers 1.8.0) e decomprimetelo.
per semplicità rinominate la cartella "datatables" e infilatela nel vostro C/M all'interno di una cartella assets nella root del C o M.

le view stanno...nalla cartella view, per cui il nostro view.html.php della nostra view conterrà oltre all'altro codice che vi sarà necessario:

-L'inclusione degli script js (nell'esempio è su un componente di un gestionale lato pubblico)
$document->addScript(JURI::root(true).'/components/com_pippo/assets/jquery/dtables/media/js/jquery.js');
$document->addScript(JURI::root(true).'/components/com_pippo/assets/jquery/dtables/media/js/jquery.dataTables.js');
$document->addScript(JURI::root(true).'/components/com_pippo/assets/jquery/dtables/media/js/jquery.dataTables.min.js');
modificate le path col nome della vostra estensione, i files necessari sono solo quelli + i css

e l'aggiunta della dichiarazione js nella pagina (basterebbe quella che vedete a dx nell'homepage dello sviluppatore)

$document->addScriptDeclaration("$(document).ready(function() {
            $('#example').dataTable( {
   

               'aoColumnDefs': [
                  {
                     'fnRender': function ( oObj ) {
                        return oObj.aData[0] +' '+ oObj.aData[3];
                     },
                     'aTargets': [ 0 ]
                  },
               ]
            } );
         } ); ");

è solo un esempio dove ho provato un unione di 2 campi...

nel file default.php del template visualizzerete la tabella esattamente come negli esempi, magari copiate l'html di uno di quelli e poi dinamicizzatelo così:

esempio di intestazione della tabella (fissa)
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
   <thead>
   <tr class="gradeX">
      <th>Cod Cliente</th>
      <th>Denominazione</th>
      <th>Indirizzo</th>
</tr>
</thead>
   <tbody>
// a questo punto scorrete i risultati e create le righe della tabella
   <?php
   foreach($this->rowsdata as $row){
      $link = JRoute::_( 'index.php?option=com_pippo&task=show&cid='.$row->id );

   ?>
   ...................html................ .......

<?php } ?>

etc etc....

i css? ...fatelo voi :P  ciao M.

 



Web Design Bolzano Kreatif