19 décembre 2006 ~ 3 Commentaires ~ 593 lectures

Utiliser HTMLSortForm avec Structures_DataGrid, DataObjects && HTML_QuickForm_DHTMLRulesTableless


Utiliser HTMLSortForm avec Structures_DataGrid, DataObjects && HTML_QuickForm_DHTMLRulesTableless

Pour avoir un exemple commenté, lisez la suite ;-)


Comme un exemple vaut mieux qu’un long discours, voilà un fichier "typique".
Je vous laisse effectuer vous-même les includes et require qui vont bien.

<?php

/*
Votre code ici
*/

// Paramètre de tri (peut-être récupéré en $_GET)
$tri = array('titre' => 'ASC', 'id' => 'DESC');
$parpage = array_key_exists('parpage', $_GET ) ? $_GET['parpage'] : '20';

// Dataobject
$rq = new myTable();
$rq->monChamp= 3;

// Structure
$dg = & new Structures_DataGrid($parpage);
$dg->sortRecordSet($tri);
$dg->bind($rq);

// Colonnes:
$dg->addColumn(new Structures_DataGrid_Column('id', 'id', 'id'));
$dg->addColumn(new Structures_DataGrid_Column('Titre', 'titre', 'titre'));
$dg->addColumn(new Structures_DataGrid_Column('Texte', 'texte', 'texte'));


/****************************************/
// Numéro de page
echo $dg->getOutput(DATAGRID_RENDER_PAGER);


/****************************************/
// Contenu
$rendererOptions = array(
'sortIconASC' => '<img src="images/up.gif" alt="Tri ascendant" border="0" />',
'sortIconDESC' => '<img src="images/down.gif" alt="Tri descendant" border="0" />' );

$table = new HTML_Table(array('width' => '100%', 'cellspacing' => '1', 'cellpadding' => '1', 'class' => 'inputbox'));
$dg->fill($table, $rendererOptions);
$table->altRowAttributes(0, array('bgcolor'=>'#FFFFFF'), array('bgcolor'=>'#CCCCCC'), true);

echo $table->toHtml();

/****************************************/
// formulaire

$parpages = array();
for ($i=5; $i<51; $i+=5) {
$parpages[$i] = "$i par page";
}

$rendererOptions_Sort = array(
'textAscending' => 'Ascendant',
'textChoose' => 'Choix...',
'textDescending' => 'Descendant',
'textSortBy' => 'Trier par',
'textSubmit' => 'Valider',
'textThenBy' => 'Ensuite par...',
'directionStyle' => 'radio',
'sortFieldsNum' => 2);

$form = & new HTML_QuickForm_DHTMLRulesTableless(null, 'GET');
$dg->setRenderer('HTMLSortForm');
$dg->fill($form, $rendererOptions_Sort);

$form->addElement('select', 'parpage', 'Par page :');
$form->addElement('submit', 'filtrer', 'Filtrer');
$form->setDefaults(array('parpage' => 20));

$renderer =& new HTML_QuickForm_Renderer_Tableless();
$GLOBALS['_HTML_QuickForm_default_renderer'] =& $renderer;
$renderer->addStopFieldsetElements('submit');

echo $form->toHtml();
/****************************************/
?>

N’hésiter pas à me contacter si vous avez des questions.

Mot clés:

3 commentaires

  1. ledad 19 décembre 2006 at 9:24 Permalink

    oui, j’ai une question: a quoi cela sert il ??? :p

  2. Jerry 19 décembre 2006 at 10:36 Permalink

    A faire des belles listes, toutes ordonnées, tout simplement ;-) Passe à mon bureau, je te montre

  3. ledad 19 décembre 2006 at 12:31 Permalink

    effectivement, rien ne vaut une belle demonstration… :D