Filter 从CgridView过滤器-Yii1中的过滤器中删除空选项
我想删除列表数据值的空选项或第一个选项。我有Filter 从CgridView过滤器-Yii1中的过滤器中删除空选项,filter,yii,yii-extensions,cgridview,yii1.x,Filter,Yii,Yii Extensions,Cgridview,Yii1.x,我想删除列表数据值的空选项或第一个选项。我有水果列表模型,它有一个列表,所以我需要防止用户选择全部 但现在的问题是空选项,可以让用户选择所有的水果,所以我如何才能删除 这是我的密码 $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$dataProvider, 'columns'=>array( array( 'header' =>
水果列表
模型,它有一个列表,所以我需要防止用户选择全部
但现在的问题是空选项,可以让用户选择所有的水果,所以我如何才能删除
这是我的密码
$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',
),
),
));
您可以在dataProvider中设置条件,使其返回所有非空值的结果 $dataProvider->criteria->addCondition('fruit_id不为NULL');
我希望它的工作 默认情况下,
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();
// ...
解决了这个问题。谢谢。-@rob006