Yii Framework Forum: [Risolto] Listview + Gridview Relazionata - Come Renderla Filtrabile E Ordinabile? - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[Risolto] Listview + Gridview Relazionata - Come Renderla Filtrabile E Ordinabile? .. risolto anche elegantemente ... Rate Topic: -----

#1 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 699
  • Joined: 03-October 12
  • Location:Ferrara

Posted 17 January 2013 - 09:56 AM

Solo problema delle viste 'annidate'.

Ho un Client con n Delivery

Nella detail view di Client devo mostrare la cgridview con i delivery di quello specifico cliente

Ho provato questa soluzione, e questo ha reso 'ordinabile' la grid view:

public function actionView($id)
{
      $client = $this->loadModel($id);
      
      $this->render('view',array(
	   	   'model'=> $client,
                   'client_delivery' => Delivery::model()->byClient($id)->search()
       ));
}


Quello che succede è che usando nella CGridView le priorietà nel modo seguente, l'ordinamento va, ma la ricerca no, nella query che risulta dal log NON compare neppure il nome del campo filtrato...

        'dataProvider'=>$client_delivery,
        'filter'=> Delivery::model(),
        'columns'=>array(
            array (
              'name' => 'id',
              'value' => '$data->id'
             ),
            array(
                'name' => 'channel',
                // 'filter' => array('HTTP_POST','HTTP_GET','FTP'),
            ),
            'status',
            
        ),


Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#2 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 699
  • Joined: 03-October 12
  • Location:Ferrara

Posted 17 January 2013 - 12:09 PM

SOLUZIONE TROVATA !!!
public function actionView($id)
{
        $delivery = new Delivery('search');
        
        if(isset($_GET['Delivery'])) {
			$delivery->attributes=$_GET['Delivery'];
        }
        
        $client_delivery = $delivery->byClient($id)->search();
                
	$this->render('view',array(
			  'model'=> $this->loadModel($id),
                          'delivery_model'=> $delivery,
                          'client_delivery' => $client_delivery,
	));
}



Nella _view di client, nelle proprietà della griglia

'dataProvider'=>$client_delivery,
'filter'=>$delivery_model,

Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users