Inserire Intestazioni Multiriga In Una Cgridview

Salve a tutti. Dopo aver caricato nel wiki il mio modesto primo contributo, ho pensato di replicare qui la cosa nel nostro bellissimo idioma. In fondo, penso di non essere l’unico ad avere qualche problema con l’inglese, e non sono sicuro che quello che ho scritto nel wiki sia così leggibile.

Quindi ecco qua il frutto del mio sudore.




<?php

/*

 * La classe aggiunge una proprietà alla CGridView per consentire la produzione

 * di tabelle con righe di intestazione multiple con effetto di raggruppamento

 * delle colonne.

 * 

 * $this->widget('CGridViewPlus', array(

 * ...

 * 'addingHeaders' => array(

 *          array('group A' => 2, 'group B' => 5),

 *          array('sub j' => 3, 'sub k' => 2, 'sub l' => 2),

 *      ),

 * ...

 * 

 * La proprietà 'addingHeaders' è un array in cui ogni elemento rappre-

 * senta una riga di intestazione aggiuntiva; ogni riga è a sua volta un array

 * che ha come chiave il testo da inserire nell'intestazione e come valore il 

 * numero delle colonne da occupare (colspan).

 * 

 * L'utilizzo della classe richiede l'inserimento del riferimento nella sezione

 * 'components' del file di configurazione 'main.php':

 * 'CGridViewPlus' => array('class' => 'components.CGridViewPlus',),

 * 

 */

Yii::import('zii.widgets.grid.CGridView');


class CGridViewPlus extends CGridView {


    public $addingHeaders = array();


    public function renderTableHeader() {

        if (!empty($this->addingHeaders))

            $this->multiRowHeader();


        parent::renderTableHeader();

    }

    

    protected function multiRowHeader() {

        echo CHtml::openTag('thead') . "\n";

        foreach ($this->addingHeaders as $row) {

            $this->addHeaderRow($row);

        }

        echo CHtml::closeTag('thead') . "\n";

    }


    protected function addHeaderRow($row) {

        // inserisce una singola riga di intestazione

        echo CHtml::openTag('tr') . "\n";

        // eredita le opzioni dalla prima colonna dell'intestazione standard

        $options = $this->columns[0]->headerHtmlOptions;

        foreach ($row as $header => $width) {

            $options['colspan'] = $width;

            echo CHtml::openTag('th', $options);

            echo $header;

            echo CHtml::closeTag('th');

        }

        echo CHtml::closeTag('tr') . "\n";

    }


}


?>



grazie per il contributo.

Che ne dici di inserire uno screenshot nel wiki?