2012-04-10 3 views
10

У меня есть таблица поставщиков (id, title, onoff), где onoff-столбец является статусом: 1 = on, 0 = off У меня нет таблицы в БД для этих статусов, поэтому я не есть модель для статусов.Выпадающий фильтр 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 забыть состояние выпадающего списка Что является лучшим способом для создания раскрывающегося списка в этом случае?

И что является лучшим способом заменить 1 на On и 0 на Off в datagrid ячейках?

+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'; 
}