0

我在我的项目中遇到了 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: 在此处输入图像描述

4

1 回答 1

0
  1. 您在 multiselect 中的下拉属性是typeSelectedName在模型文件中您检查type属性的标准。
  2. 多选进行 ajax 调用;所以你需要检查它以及其中传递了什么样的数据。

最好在多选中添加一些选项来调用自定义 ajax 进行模型过滤:在返回数据时更新网格。这样,multyselect 将作为唯一的过滤器选项工作(不会考虑其他选项);尽管您可能会通过表单数据this.form.serialize()并进行联合过滤。

于 2014-12-23T12:29:38.570 回答