Yii echmultiselect不过滤多选

时间:2014-12-23 12:07:41

标签: php yii widget cgridview jquery-multiselect

我的项目中遇到了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: enter image description here

1 个答案:

答案 0 :(得分:0)

  1. multyselect中的dropdown属性为typeSelectedName,而在模型文件中,您检查type属性的条件。
  2. multyselect进行ajax调用;所以你需要检查它以及传递的数据类型。
  3. 最好在multiselect中添加一些选项以调用模型过滤的自定义ajax:在返回数据时执行更新网格。这样,multyselect将作为唯一的过滤选项(不考虑其他选项);虽然您可以通过this.form.serialize()获取表单数据并进行联接过滤。