BenWeasel
(Massimo Zil)
1
Ciao a tutti,
Ho un problema probabilemte semplice ma che non so ancora bene come affrontare
Ho un’applicazione che crea un data provider per popolare una GridView paginata.
La tabella è però diventata molto grossa e mi chiedono di mostrare paginate solo le prime 3000 righe
Per intenderci, ora ho circa 40000 righe, la mia gridview mostra 20 righe per pagina e risultano quindi circa 2000 pagine
Avrei bisogno di popolare una grid view con solo le ultime 3000 righe, mostrando quindi una gridview con "solo" 150 pagine
Quale è secondo voi l’approccio migliore?
Grazie in anticipo
Massimo
realtebo
(Mirkotebaldi)
2
Crea un parametrized named scope che accetta un parametro, questo sarà il numero di righe da visualizzare
Per esempio: questo mostra come fare uno scope parametrico.
public function maxRows($count)
{
$this->getDbCriteria()->mergeWith(array(
'limit' => $count,
));
return $this;
}
si usa così in una grid view
'dataProvider' => $model()->maxRows(30)->search();
Tu devi solo aggiungere il codice per fare l’offset a -$count (se il tuo motore db te lo permette).
La tecnica di yii è quella, per i dettagli se hai bisogno sono qui, per ora te li lascio