从CgridView过滤器-Yii1中的过滤器中删除空选项

时间:2019-04-02 05:10:26

标签: filter yii yii-extensions cgridview yii1.x

我想删除列表数据值的空或第一个选项。我有FruitList模型,它有一个列表,所以我需要阻止用户选择全部。

但是现在的问题是空选项,该选项可以让用户选择所有水果,所以我该如何删除。

这是我的代码

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(

         array(
            'header' => 'Buyer',
            'name' => 'Buyer',
            'value' => 'customer_name',
            'filter' => $fruits
        ),
        array(
            'header' => 'Fruits',
            'name' => 'fruit_id',
            'value' => '$data->Buyers->FruitList->Name',
            'filter' => $fruits
        ),
        array(            
            'class'=>'CButtonColumn',
        ),
    ),
));

2 个答案:

答案 0 :(得分:1)

默认情况下,CGridView的过滤器会显示带有空选项的下拉列表,以允许禁用过滤。但是您可以通过提供自己的下拉列表作为过滤器来覆盖此行为:

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(

         array(
            'header' => 'Buyer',
            'name' => 'Buyer',
            'value' => 'customer_name',
            'filter' => CHtml::activeDropDownList($model, 'customer_name', $fruits),
        ),
        array(
            'header' => 'Fruits',
            'name' => 'fruit_id',
            'value' => '$data->Buyers->FruitList->Name',
            'filter' => CHtml::activeDropDownList($model, 'fruit_id', $fruits)
        ),
        array(            
            'class'=>'CButtonColumn',
        ),
    ),
));

确保为模型中的这些过滤器设置默认值-在控制器中类似这样:

// ...
$model->fruit_id = FruitList::DEFAULT_ID;
$model->customer_name = FruitList::DEFAULT_ID;
if (isset($_GET['FruitList'])) {
    $model->setAttributes($_GET['FruitList']);
}
$dataProvider = $model->search();
// ...

答案 1 :(得分:0)

您可以在dataProvider中设置条件,以便它返回所有非null值的结果。例如 $ dataProvider-> criteria-> addCondition('fruit_id IS NOT NULL'); 我希望它的工作!