У меня проблемы с echmultiselect в моем проекте, он не фильтрует вообще и запрещает другие фильтры столбцов, которые уже работают.
Посмотреть
array (
'name'=>'typeSelectedName',
'value'=>'$data->typeSelected->name',
'filter'=> $this->widget('EchMultiselect', array(
'model' => $model,
'dropDownAttribute' => 'typeSelectedName',
'dropDownHtmlOptions'=> array(
'style'=>'width:225px;',
'multiple'=>true,
),
'data' => array('A'=>'A','B'=>'B','C'=>'C','Z'=>'Z','X'=>'X','K'=>'K','T'=>'T'),
'options' => array(
'header'=> Yii::t('EchMultiSelect.EchMultiSelect',''),
'buttonWidth' => 80,
'position'=>array('my'=>'left bottom', 'at'=>'left top'),
'ajaxRefresh' => true,
'multiselect'=>true,
'filter'=>true,
),
),
true // capture output; needed so the widget displays inside the grid
),
),
модель
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
if(!empty($this->type)) {
foreach($this->type as $v) {
$criteria->compare('type', $v, false, 'OR');
}
}
$criteria->compare('sa_id',$this->sa_id,true);
…
я использую yii 1.1.13, и я могу видеть это Cgridview:
typeSelectedName
в то время как в файле модели для критериев вы проверяете type
приписывать.Лучше добавить несколько опций в множественный выбор, чтобы вызывать пользовательский Ajax для фильтрации моделей: по возвращенным данным обновляйте сетку. Таким образом, multyselect будет работать как единственная опция фильтра (другие опции не будут учитываться); хотя вы можете получить данные формы через this.form.serialize()
и сделать совместную фильтрацию.
Других решений пока нет …