2012-04-10 111 views
10

我有供应商表(ID,标题,onoff)onoff列是一个状态: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}' 
     ), 
    ), 

它过滤数据,但阿贾克斯后忘记下拉 什么是在这种情况下,建立下拉的最佳方式的状态?

什么是在datagrid单元格中将1替换为0并将其替换为0的最佳方法?

+1

这是确定接受自己的解决方案,这样就把编辑的部分作为一个答案,并接受它。有助于保持未解答的问题百分比低。 – 2012-04-10 16:07:38

回答

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