muffin
muffin

Reputation: 2104

Revert Column and Row Yii TbExtendedGridView

I'm displaying a simple table containing two headers 'variable' and 'value', The display would look like:

Variable| Value
entry1| value1
entry2| value2

How do revert the columns and rows to make it look like

Variable  | entry1 | entry2
Value     | value1 | value2

My current code:

$this->widget('bootstrap.widgets.TbExtendedGridView', array(
    'sortableRows'=>true,
    'afterSortableUpdate' => 'js:function(id, position){ console.log("id: "+id+", position:"+position);}',
    'type'=>'striped bordered',
    'dataProvider' => $dataProvider,
    'columns' => array(                
        array( 
           'header'=>'Variable',
           'name'=>'variable_id',
           'value'=>'$data->variable->name',
           'filter'=>CHtml::listData(Study::model()->findAll(), 'id', 'variable_name'),
           ),
        'value',
        ),
    ));

Upvotes: 0

Views: 1310

Answers (1)

Eduardo M
Eduardo M

Reputation: 1007

Reading the documentation, there isn't one way to change from row to columns or vice and versa.

YiiBooster Reference

Class reference of CGridView

So, what you should do is, create a GridView without header or use the public property of CGridView hideHeader that allow you to hide the headers, anyway, you have to change the data to display with 3 columns instead of 2.

Change from:

$data[0][0] = 'entry1';
$data[0][1] = 'value1';
$data[1][0] = 'entry2';
$data[1][1] = 'value2';
$gridDataProvider = new CArrayDataProvider($data);

// $gridColumns with header
$gridColumns = array(
    array('name'=>'variable', 'header'=>'Variable'),
    array('name'=>'value', 'header'=>'Value'),
);

$this->widget('bootstrap.widgets.TbGridView', array(
    'dataProvider'=>$gridDataProvider,
    'template'=>"{items}",
    'columns'=>$gridColumns,
));

To:

$data[0][0] = 'Variable';
$data[0][1] = 'entry1';
$data[0][2] = 'value1';
$data[1][0] = 'Value';
$data[1][1] = 'entry2';
$data[1][2] = 'value2';
$gridDataProvider = new CArrayDataProvider($data);

$this->widget('bootstrap.widgets.TbGridView', array(
    'dataProvider'=>$gridDataProvider
));

Upvotes: 1

Related Questions