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);
}

グリッドビューで、次のような列として使用できます

array(
    'name' => 'Day',
    'type' => 'raw',
    'value' => '$data->dayDropDown',
),
于 2013-06-03T14:56:55.013 に答える
0

これは、ドロップダウン値と update 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 に答える