yii - filter grideview work with having condition in search function in criteria? -


i have grideview code

 $this->widget('zii.widgets.grid.cgridview', array( 'id'=>'lecture-grid', 'dataprovider'=>$model->search(),  'filter'=>$model, 'columns'=>array(     array(         'header'=>'name',         'type' => 'raw',        // 'name'=>'name',         'value' => 'chtml::link($data->name,yii::app()->baseurl . "/uploads/" . $data->name)',      ),     array(         'header'=>'pages',          'value'=>'$data->slide_num'     ),     array(         'header'=>'type',          'value'=>'$data->type'     ),     array(         'header'=>'size',          'value'=>'$data->size'     ),    // 'subject.name'     array (         'header'=>'subject',         'value' => 'ucfirst($data->subject->name)',         'filter' => chtml::dropdownlist('lecture[subject_id]',                 $model->subject_id, chtml::listdata(subject::model()->findall('department_id='.$department_id),'id','name'),                 array('empty' => '(select)'))      ) /*    array(         'name'=>'subject',         'type'=>'raw',         'value'=>"subject::model()->find('id=2')->name",         'filter'=>''     ),*/   ), )); 

and in model search function

public function search() {     // @todo please modify following code remove attributes should not searched.      $criteria=new cdbcriteria;      $criteria->compare('id',$this->id);     $criteria->compare('name',$this->name,true);     $criteria->compare('slide_num',$this->slide_num,true);     $criteria->compare('type',$this->type,true);     $criteria->compare('size',$this->size,true);     $criteria->compare('user_id',$this->user_id);     $criteria->compare('subject_id',$this->subject_id);      return new cactivedataprovider(get_class($this), array(         'criteria' => $criteria,     ));     /*return new cactivedataprovider($this, array(         'criteria'=>$criteria,     ));*/ } 

every thing ok target filter works in search function correctly want have condition in criteria $criteria->condition='subject_id=1 or subject_id=3'; when put condition in criteria filter don't work solution having condition in search function , filter work too

public function search() {     // @todo please modify following code remove attributes should not searched.      $criteria=new cdbcriteria;      $criteria->compare('id',$this->id);     $criteria->compare('name',$this->name,true);     $criteria->compare('slide_num',$this->slide_num,true);     $criteria->compare('type',$this->type,true);     $criteria->compare('size',$this->size,true);     $criteria->compare('user_id',$this->user_id);     $criteria->compare('subject_id',$this->subject_id);     $criteria->condition='subject_id=1 or subject_id=3';     return new cactivedataprovider(get_class($this), array(         'criteria' => $criteria,     ));     /*return new cactivedataprovider($this, array(         'criteria'=>$criteria,     ));*/ } 

instead of $criteria->condition='subject_id=1 or subject_id=3';

try

$criteria->addcondition("subject_id = 1"); $criteria->addcondition("subject_id = 2", "or"); 

or just

$criteria->addincondition("subject_id", array("1","2")); 

Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -