CGridView - $this->widget AJUDA

Olá a todos, desculpe se está pergunta já foi feita alguma vez, mas eu procurei e não achei algo que responde-se minha dúvida…

arquivo InputController.php


$dataProvider = new ArrayDataProvider($xmlData->getSentences());

$this->render('input', array('dataProvider' => $dataProvider, 'mode' => 'sentence'));

arquivo input.php


$this->widget('zii.widgets.grid.CGridView', array(

	'dataProvider' => $dataProvider,

        'columns' => array('id', 'text'),

        'selectableRows' => 0,

));

com este código, tenho o resultado como visto na figura em anexo.

na imagem da para ver que está mostrando "1-10 de 150 resultados", o que eu gostaria de fazer é mostrar os 150 resultados de um vez. Tudo na mesma página.

Agradeço a quem poder me ajudar…

Olá Alencar, tenta algo assim


	public function search() {


		...


		return new CActiveDataProvider($this, array(

			'criteria'		=>$criteria,

			'pagination'	=>array('pageSize'=>150),

			'sort'			=>array('defaultOrder'=>'id ASC',),


		));

	}

Flw

Ta, este código eu já havia visto em alguns outros posts.

Porém o que eu não entendi ainda, é aonde eu coloco isto? e o que seria a variável $criteria?

teria como me explicar?

Alencar, tem um tempo que ñ uso o Yii 1, mas está me parecendo que isso fica no controller. Nesse CActiveDataProvider, você irá adicionar o ‘pagination’ =>array(‘pageSize’=>150), em qq lugar do array. Porém eu acho essa uma solução meia boca. Pq qnd vc tiver 151 registros ele ira paginar de novo.

tem que procurar na documentação do CActiveDataProvider no próprio site do Yii se há alguma forma de não fazer a paginação, ou, nesse caso específico fazer o foreache e montar o HTML na mão na sua view.

Testei de várias maneiras e não consegui fazer funcionar…

não seria um problema definir 150 o número de itens para aparecer, pois é só definir o tamanho do próprio array que iria mostrar todas as frases sem fazer a paginação.

no fim das contas, não criei um DataProvider, e fiz somente um array e montei minha tabela manualmente no HTML…

se alguém souber me explicar como fazer, eu agradeço…

Tenta assim




$dataProvider = new CActiveDataProvider(

    	$xmlData->getSentences(),

    	'pagination' => array(

            	'pageSize' => 150,

        	)

    	);

$this->render('input', array('dataProvider' => $dataProvider, 'mode' => 'sentence'));