【问题标题】:Yii echmultiselect not filtering multiselectYii echmultiselect 不过滤多选
【发布时间】:2014-12-23 12:07:41
【问题描述】:

我在我的项目中遇到了 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:

【问题讨论】:

    标签: php yii widget cgridview jquery-multiselect


    【解决方案1】:
    1. 您在multyselect 中的下拉属性是typeSelectedName,而在模型文件中您检查type 属性的条件。
    2. 多选进行 ajax 调用;所以你需要检查它以及其中传递了什么样的数据。

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

    【讨论】:

    • @Carlos M,我的 ajax 调用的第二点怎么样?你修复了下拉属性名称吗?
    • 我遵循了这些说明 yiiframework.com/extension/echmultiselect,但我无法正常工作,当我将下拉属性 typeSelectedName 更改为 type 时,它显示了一个错误 其他我在没有小部件的情况下使用的想法:array( 'name'=>'typeSelectedName', 'value'=>'$data->typeSelected->name', 'filter'=>array('A B Z X K','A B Z','T C'), ) 但不知道如何配置$criteria->compare('type',$this->type, true,'OR'); 以便在 type 列中获取所有具有这些值的行
    • @CarlosM,是的,type 是一个属性的坏名称。你能在模型中重写/重新定义这个属性吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多