hello I’m new in yii I have a problem with the filter gridview if you can help me
my controler
public function actionAdmin()
{
$model=new Prestation('search');
if (intval(Yii::app()->request->getParam('clearFilters'))==1) {
EButtonColumnWithClearFilters::clearFilters($this,$model);
}
$criteriaPresta=new CDbCriteria;
$criteriaPresta->addInCondition('TypePresta',array('1'));
$criteriaFrais=new CDbCriteria;
$criteriaFrais->addInCondition('TypePresta',array('2'));
$this->render('admin',array(
'model'=>$model,
'criteriaPresta'=>$criteriaPresta,
'criteriaFrais'=>$criteriaFrais,
));
}
my view
<?php
$array = array();
$array[] = array(
'name'=>'CodePresta',
'header'=>'Code Prestation',
'htmlOptions'=>array('style'=>'text-align:left;width:150px;'),
);
$array[] = array(
'name'=>'LibellePresta',
'header'=>'Libelle Prestation',
'htmlOptions'=>array('style'=>'text-align:left;width:350px;'),
);
$array[] = array('name' => 'SuiviBenef', 'value' => '"images/icon_checkbox_".$data["SuiviBenef"].".gif"', 'type' => 'image', 'htmlOptions' => array('style' => 'text-align:center'),'headerHtmlOptions' => array('style' => 'width:80px'));
$array[] = array(
'name'=>'duree_presta',
'header'=>'Duree',
'htmlOptions'=>array('style'=>'text-align:left;width:150px;'),
);
$array[] = array(
'name'=>'encours',
'header'=>'En cours',
'htmlOptions'=>array('style'=>'text-align:left;width:150px;'),
);
$array[] = array(
'class' => 'EButtonColumnWithClearFilters',
'clearHtmlOptions'=>array('id'=>'clear0'),
'updateButtonImageUrl' => 'images/update.png',
'viewButtonImageUrl' => 'images/view.png',
'deleteButtonImageUrl' => 'images/delete.png',
'updateButtonUrl'=>'Yii::app()->controller->createUrl("/prestation/update&id={$data["PrestationID"]}")',
'viewButtonUrl' => 'Yii::app()->controller->createUrl("/prestation/view&id={$data["PrestationID"]}")',
'deleteButtonUrl' => 'Yii::app()->controller->createUrl("/prestation/delete&id={$data["PrestationID"]}")',
'template' => '{update}{view}{delete}',
'header' => CHtml::dropDownList('pageSize', $pageSize, Yii::app()->params['pageSizeArray'], array(
'onchange' => "$.fn.yiiGridView.update('prestation-grid',{ data:{pageSize: $(this).val() }})",
)),
);
$dataProvider=$model->SearchPrest();
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'prestation-grid',
'dataProvider' => $dataProvider,
'filter' => $model,
'columns' =>$array ,
'filterSelector'=>'{filter}, #Prestation_Actif',
'selectionChanged' => 'function(id){if($.fn.yiiGridView.getSelection(id)>0) document.location.href = "index.php?r=prestation/update&id="+$.fn.yiiGridView.getSelection(id);}',
'ajaxUpdate'=>'prestation-grid,frais-grid',
'afterAjaxUpdate' => 'function(){ ajusterHeightOfTable("tab1,tab2"); }',
'template'=>'{summary}<div class="itemsContainer">{items}</div>{pager}',
));
?>
and my model
public function SearchPrest(){
$sort = new CSort();
$sort->attributes = array(
'duree_presta'=>array(
'asc'=>'DureePresta',
'desc'=>'DureePresta desc',
'default'=>'asc',
),
'CodePresta'=>array(
'asc'=>'CodePresta',
'desc'=>'CodePresta desc',
'default'=>'asc',
),
'LibellePresta'=>array(
'asc'=>'LibellePresta',
'desc'=>'LibellePresta desc',
'default'=>'asc',
),
'SuiviBenef'=>array(
'asc'=>'SuiviBenef',
'desc'=>'SuiviBenef desc',
'default'=>'asc',
),
'duree_presta'=>array(
'asc'=>'DureePresta',
'desc'=>'DureePresta desc',
'default'=>'asc',
),
'encours'=>array(
'asc'=>'encours',
'desc'=>'encours desc',
'default'=>'asc',
),);
$sql = "select PrestationID, CodePresta, LibellePresta,DureePresta, SuiviBenef, CONCAT(DureePresta,' ',TypeDuree) as duree_presta from Prestation where TypePresta=1 ";
$res = Yii::app()->db->createCommand($sql)->queryAll();
$count = count($res);
$dataProvider=new CArrayDataProvider($res, array(
'keyField'=>'PrestationID',
'totalItemCount'=>$count,
'sort'=>$sort,
'pagination'=>array(
'pageSize'=>Yii::app()->user->getState('pageSize',Yii::app()->params['defaultPageSize']),
),
));
foreach($dataProvider->rawData as $key=>$data){
$allLgCmd = LigneCommande::model()->findAllBySQL("SELECT RefPrestationID FROM LigneCommande WHERE RefPrestationID=".$data["PrestationID"]);
$data["encours"] = count($allLgCmd);
$dataProvider->rawData[$key] = $data;
}
return $dataProvider;
}