yii cgridview下拉列表值

时间:2013-06-03 12:34:03

标签: yii cgridview

我无法在cgrid视图中设置列日的值: 我可以看到下拉列表,但所有星期一设置都在同一天,而不管$ data->天所代表的那天的价值

$this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$dataProvider,
        'columns'=>array(
        array(
            'type'=>'raw',
            'name'=>'day',
        'value'=> ' CHtml::dropDownList(\'someName\'.$row,\'$data->day\',array(
                    \'Mo\'=>\'Monday\',
                    \'Tu\'=>\'Tuesday\',
                    \'We\'=>\'Wednesday\',
                    \'Th\'=>\'Thursday\',
                   \'Fr\'=>\'Friday\',
                   \'Sa\'=>\'Saturday\',
                   \'Su\'=>\'Sunday\',))',  

                ),
            'ts_id'
        )
    )); 

3 个答案:

答案 0 :(得分:3)

如果你可以接受MVC中的轻微中断,那么如果你在你的模型中放入一个小的getter方法,事情会变得更容易阅读:

public function getDayDropDown()
{
    $days = array('Mo'=>'Monday', ...);
    return CHtml::dropDownList('someName', $this->day, $days);
}

现在,在gridview中,您可以将其用作

之类的列
array(
    'name' => 'Day',
    'type' => 'raw',
    'value' => '$data->dayDropDown',
),

答案 1 :(得分:1)

只是一个小问题解决了整个剧集。 我在原帖中把引号放在$ data->天左右。这是不需要的。

   array(  'type'=>'raw',
            'name'=>'day',
            'value'=> ' CHtml::dropDownList(\'someName\'.$row,$data->day,
             array(\'Mo\'=>\'Monday\',
                        \'Tu\'=>\'Tuesday\',
                        \'We\'=>\'Wednesday\',
                        \'Th\'=>\'Thursday\',
                       \'Fr\'=>\'Friday\',
                       \'Sa\'=>\'Saturday\',
                       \'Su\'=>\'Sunday\',)
              )',  
     ),

答案 2 :(得分:0)

这是下拉值和更新onchange的示例:

$this->widget('bootstrap.widgets.TbGridView', array(
    'id'=>'session-grid',
    'type'=>'striped bordered condensed',
    'dataProvider'=>$PSDataProvider,
    'filter'=>$PSModel,
    'emptyText'=>'No hay sesiones abiertas.',
    'columns'=>array(
        array('name'=>'username', 'header'=>'Nombre de Usuario', 'filter'=>CHtml::activeTextField($PSModel, 'username', 
                 array('placeholder'=>'Buscar por usuario...'))),
        array('name'=>'product', 'header'=>'Producto', 'filter'=>CHtml::activeTextField($PSModel, 'product', 
                 array('placeholder'=>'Buscar por producto...'))),
        array('name'=>'expire', 'value'=>'date("d-m-y H:i:s", $data->expire)','header'=>'Hora de Expiracion', 'filter'=>CHtml::activeTextField($PSModel, 'expire', 
                 array('placeholder'=>'Buscar por expiracion...'))),
        array(
          'header'=>CHtml::dropDownList('pageSize',$pageSize,array(5=>5,10=>10,20=>20,50=>50),array(
            'onchange'=>"$.fn.yiiGridView.update('session-grid',{ data:{pageSize: $(this).val() }})",
            'class'=>'span1 custom-tb-dropdown-inline',
          )),
          'class'=>'bootstrap.widgets.TbButtonColumn',
          'htmlOptions'=>array('style'=>'width: 50px'),
          'template'=>'{delete}',
          'buttons'=>array(            
            'delete' => array(
              'label'=>'Terminar sesión',
            ),
          ),
          'deleteConfirmation'=>'Está seguro que desea terminar la sesión seleccionada?',
          'deleteButtonUrl'=>'$this->grid->owner->createUrl("productSession/delete", $data->primaryKey)'
        ),
    ),
));