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. multiselect は ajax 呼び出しを行います。そのため、それを確認し、どのような種類のデータが渡されるかを確認する必要があります。

multiselect 内にいくつかのオプションを追加して、モデル フィルタリング用のカスタム ajax を呼び出すことをお勧めします。データが返されたら、グリッドを更新します。このように、multiselect は唯一のフィルター オプションとして機能します (他のオプションは考慮されません)。ただし、フォームデータを取得this.form.serialize()して結合フィルタリングを行う場合があります。

于 2014-12-23T12:29:38.570 に答える