2014-12-23 3 views
0

У меня возникают проблемы с echmultiselect в моем проекте, он вообще не фильтрует и запрещает работу других фильтров столбцов.Yii echmultiselect не фильтрует multiselect

Посмотреть

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: enter image description here

ответ

0
  1. Ваш падать атрибут в multyselect равен typeSelectedName, в то время как в файле модели для критериев вы проверяете атрибут .
  2. Многозадачный вызов ajax; поэтому вам нужно проверить его и какие данные передаются в нем.

Лучше вы добавляете некоторые опции внутри multiselect для вызова пользовательского ajax для фильтрации модели: после возврата данных обновите сетку. Этот способ multyselect будет работать как единственный параметр фильтра (другие параметры не будут учитываться); хотя вы можете получить данные формы через this.form.serialize() и сделать объединенную фильтрацию.

+0

@ Карлос М, как насчет моей второй точки вызова ajax? у вас есть фиксированное имя атрибута выпадающего списка? –

+0

_i выполнил следующие инструкции: http://www.yiiframework.com/extension/echmultiselect/ , но я не могу заставить это работать, и когда я изменяю атрибут dropdown 'typeSelectedName' в' type', он показывает мне ошибку Другое идея, которую я использовал без виджета: 'array ( 'name' => 'typeSelectedName', 'value' => '$ data-> typeSelected-> name', 'filter' => array ('ABZX K ',' AB Z ',' T C '), ) ', но не знаю, как настроить ' $ criteria-> compare (' type ', $ this-> type, true,' OR '); ' чтобы получить все строки с этими значениями в ** type ** column –

+0

@CarlosM, да, 'type' является плохим именем для атрибута. Можете ли вы переписать/переопределить этот атрибут в модели? –