2012-04-10 15 views
10

私は、オンオフの列がステータス:1 =オン、0 =オフのプロバイダのテーブルを持っています これらのステータスのDBはテーブルにありませんステータスのモデルを持っているCGridViewフィルタのドロップダウンから配列

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'provider-grid', 
    'dataProvider'=>$model->search(), 
    'filter'=>$model, 
    'columns'=>array(
     array(
      'name'=>'id', 
      'htmlOptions'=>array('width'=>'40px'), 
     ), 
     'title', 
     array(
      'name'=>'onoff', 
      'filter'=>CHtml::dropDownList('Provider[onoff]', '', 
       array(
        ''=>'All', 
        '1'=>'On', 
        '0'=>'Off', 
       ) 
      ), 
     ), 
     array(
      'class'=>'CButtonColumn', 
      'template'=>'{update}{delete}' 
     ), 
    ), 

これは、データをフィルタリングしますが、Ajaxはドロップダウン の状態を忘れてしまった後は、このケースでドロップダウンを構築するための最良の方法は何ですか?

DataGridセルで1をOnに、0をOffに置き換える最も良い方法は何ですか?

+1

それはあなた自身のソリューションを受け入れ、その答えとして編集した部分を入れて、それを受け入れるように大丈夫です。未回答の質問率を低く抑えるのに役立ちます。 –

答えて

7
array('name' => 'language', 
'value' => '$data->language', 
'filter' => CHtml::listData(Vediodesc::model()->findall(), 'language', 'language'), 
), 
21
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'provider-grid', 
'dataProvider'=>$model->search(), 
'filter'=>$model, 
'columns'=>array(
    array(
     'name'=>'id', 
     'htmlOptions'=>array('width'=>'40px'), 
    ), 
    'title', 
    array(
     'name'=>'onoff', 
     'value'=>'Crud::getOnoff($data->onoff)', 
     'filter'=>CHtml::listData(Crud::getOnoffs(), 'id', 'title'),, 
    ), 
    array(
     'class'=>'CButtonColumn', 
     'template'=>'{update}{delete}' 
    ), 
), 
モデルで

public function getOnoffs() 
{ 
return array(
    array('id'=>'1', 'title'=>'On'), 
    array('id'=>'0', 'title'=>'Off'), 
); 
} 
public function getOnoff($onoff) 
{ 
if($onoff == 1) 
    return 'On'; 
else 
    return 'Off'; 
} 
関連する問題