我想删除列表数据值的空或第一个选项。我有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',
),
),
));
答案 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'); 我希望它的工作!