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 ?
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")',
),