1

我无法在 cgrid 视图中设置列 day 的值:我可以看到下拉列表,但无论 $data->day 表示的日期值如何,都设置了星期一的同一天

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

3 回答 3

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',
),
于 2013-06-03T14:56:55.013 回答
1

只是一个小问题解决了整个情节。我在原始帖子中为 $data->day 加上了引号。这是不需要的。

   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\',)
              )',  
     ),
于 2013-06-03T17:40:07.690 回答
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)'
        ),
    ),
));
于 2013-06-03T13:32:51.090 回答