0

我正在显示一个包含两个标题“变量”和“值”的简单表格,显示如下:

Variable| Value
entry1| value1
entry2| value2

如何还原列和行以使其看起来像

Variable  | entry1 | entry2
Value     | value1 | value2

我当前的代码:

$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',
        ),
    ));
4

1 回答 1

1

阅读文档,没有一种方法可以从行更改为列,反之亦然。

YiiBooster 参考

CGridView的类引用

所以,你应该做的是,创建一个不带标题的 GridView 或使用允许隐藏标题的 CGridView hideHeader的公共属性,无论如何,你必须更改数据以显示 3 列而不是 2 列。

更改自:

$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,
));

至:

$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
));
于 2013-05-15T05:49:21.423 回答