2012-04-10 105 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'; 
}