Modificare le Criteria di un DataProvider via AJAX

Ciao a tutti,

è possibile cambiare il modo in cui un DataProvider mostra i risultati, ad esempio modificando l’ordinamento, attraverso una chiamata AJAX?

Il codice che sto usando è questo, ma per il momento non funziona:


$criteria = new CDbCriteria();

if($_POST['action'] == 'sort') {

    $order = urldecode($_POST['order']);

    $criteria->order = $order;

}

$dataProvider = new CActiveDataProvider('Offers', array('criteria'=>$criteria));

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

    'dataProvider' => $dataProvider,

));

e i dati che passo via AJAX sono questi (li ho già controllati con FireBug):


action=sort&order=price%20DESC

Possibile che i dati che passi siano in get e la lettura sia sbagliata?




    if($_POST['action'] == 'sort') {

        ...

    }



i dati li passo in POST e, oltre che verificarli con FireBug, li ho anche mostrati in un alert via AJAX

perciò i dati vengono passati correttamente, deve essere sbagliato il mio approccio :rolleyes:

Che cosa succede se al posto di questo:




if($_POST['action'] == 'sort') {

    $order = urldecode($_POST['order']);

    $criteria->order = $order;

}



… ti limiti a scrivere …




$criteria->order = 'price DESC';



Sì, era un test che avevo fatto e funzionava.

Ho risolto con un CHtml::ajaxLink che punta ad actionSort() passandogli il criterio di ordinamento

l’action in questione si occupa di fare un renderPartial usando l’ordine passato

grazie per i tuoi consigli, sensorario :)