View List

In Yii how can add Filter drop down list in CList view? In a have 3 fields- Id, Name, Sex. I want to add a filter drop down in list view contain sex attribute (male/female) and update the list on selection of drop down. How it possible ?

Dear FRIEND

Let us assume that we have a Model:[b]Medico/b.

In index.php,you have to insert a dropdown at the top and also registers a script to update the list view.

views/medico/index.php




<?php

echo CHtml::dropDownList('sex','',array("male"=>"male","female"=>"female"),array(

'id'=>"sex","prompt"=>"choose sex"

));

?>

<?php $this->widget('zii.widgets.CListView', array(

	'dataProvider'=>$dataProvider,

	'itemView'=>'_view',

	'id'=>"medico-list"

	

)); ?>


<?php


Yii::app()->clientScript->registerScript('sex','

$("#sex").change(function(){

	$.fn.yiiListView.update("medico-list",{data:{sex:$(this).val()}});

	

	});


');




MedicoController.php




public function actionIndex()

{  

     $criteria=new CDbCriteria;

     if(isset($_GET['sex']))

	{

		$criteria->addCondition("sex=:sex");

		$criteria->params=array(":sex"=>$_GET["sex"]);

	}


     $dataProvider=new CActiveDataProvider('Medico',array(

			'criteria'=>$criteria,

			));

     $this->render('index',array(

			'dataProvider'=>$dataProvider,

		));

}



Regards.

Thanks 4 ur rply… The code works fine. But In the controller action have a condition. After adding this condition the code doesn’t works. How it solve?

Controller


public function actionIndex()

	{       

                $type='2';

                 $criteria=new CDbCriteria;

                if(isset($_GET['sex']))

        {

                $criteria->addCondition("sex=:sex");

                $criteria->params=array(":sex"=>$_GET["sex"]);

        }

                $criteria->select = "`name`,`address`";

                $criteria->condition="type = $type";               

                $dataProvider=new CActiveDataProvider('Address',array('criteria'=>$criteria,'pagination'=>array('pageSize'=>3)));

		

		$this->render('index',array(

			'dataProvider'=>$dataProvider,

		));

	}

Index


<?php

echo CHtml::dropDownList('sex','',array("1"=>"male","2"=>"female"),array(

'id'=>"sex","prompt"=>"choose sex"

));

?>

<?php $this->widget('zii.widgets.CListView', array(

	'dataProvider'=>$dataProvider,

	'itemView'=>'_view',

        'id'=>"address-list"

)); ?>

<?php


Yii::app()->clientScript->registerScript('sex','

$("#sex").change(function(){

        $.fn.yiiListView.update("address-list",{data:{sex:$(this).val()}});

        

        });


');

Dear Friend

Change the following




$criteria->condition="type = $type";      



to




$criteria->addCondition("type=$type");   



Thanks…:) It works fine.

nice work,but how is multiple ajax calls ?

if you just want to add a filter try this,

in your CListview columns




array(

       'name'=>'status',

       'header'=>Yii::t('zii','Status'),

       'filter'=>array('1'=>Yii::t('zii','Active'),'0'=>Yii::t('zii','Inactive')),

       'value'=>'($data->status=="1")?("Active")<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/sad.gif' class='bbc_emoticon' alt=':(' />"Inactive")',

      ),