Yii Framework Forum: Acerca De Paginación - Yii Framework Forum

Jump to content

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

Acerca De Paginación Rate Topic: -----

#1 User is offline   IRCSASW 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 65
  • Joined: 01-September 11
  • Location:Cancún, México.

Posted 30 May 2013 - 09:12 PM

Hola foro,

Estoy agrupando unos datos para mostrar en un grid pero la paginación hace referencia al total de los registros no al resultado agrupado.

Como pueden ver en el adjunto, el resultado agrupado es de 3 registros de 12 en total lo cual es correcto pero en la paginación me sale que son 12, cuando son muchos hasta crea las pestañas de pagina 2, 3, 4... sin datos claro.

Esto tengo en el modelo, agrupar.
public function porcotizar()
{
	$criteria=new CDbCriteria;
	$criteria->alias = 'rfq_items';
	$criteria->select = 'id_familia';
	$criteria->condition = 'rfq_items.activo = 1 AND rfq_items.estado = 1 OR rfq_items.estado = 2 OR rfq_items.estado = 3';
	$criteria->group = 'id_familia';
	$criteria->with = 'idFamilia';

	//$criteria->compare('estado',$this->getEstadoPartidaNum($this->estado));
	$criteria->compare('idFamilia.familia', $this->familia_search, true);

	return new CActiveDataProvider($this, array(
		'criteria'=>$criteria,
		'sort'=>array(
			'attributes'=>array(
				'familia_search'=>array(
					'asc'=>'idFamilia.familia',
					'desc'=>'idFamilia.familia DESC',
				),
        	'*',
			),
		),
		'pagination'=>array(
			'pageSize'=>100,
		),
		'keyAttribute'=>'id_familia',
	));
}


Este es el grid en la vista.
$this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'items-grid',
	'dataProvider'=>$model->porcotizar(),
	'cssFile' => Yii::app()->theme->baseUrl . '/css/gridviewstyle/styles.css',
	'columns'=>array(
		array( 
			'class'=>'CCheckBoxColumn', 
			'value'=>'$data->id_familia',
			'selectableRows'=>10,
			'id'=>'chk',
		),
		array(
            'name'=>'familia_search',
            'value'=>'$data->idFamilia->familia',
        ),
	),
));


Cómo lo puedo corregir?

Gracias.

Attached File(s)


Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México
0

#2 User is offline   angelmartinez639 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 31-May 13

Posted 31 May 2013 - 07:54 AM

Interesante
0

#3 User is offline   xavieremv 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 45
  • Joined: 19-September 12

Posted 31 May 2013 - 12:51 PM

Interesante realmente...

Lo que que pasa es que YII no toma en cuenta el GROUP BY para hacer los COUNT.
Por que? porque así lo quiso programar el chino!

Nah mentira, en realidad es por la forma como trabajan los manejadores de bases de datos, los COUNT te retornan un resultado diferente al esperado cuando le agregas un GROUP BY al sql.

Una posible solución es que agregues la cantidad de datos retornados manualmente al parámetro totalItemCount. Ejemplo:


return new CActiveDataProvider($this, array(
                'criteria'=>$criteria,
                'sort'=>array(
                        'attributes'=>array(
                                'familia_search'=>array(
                                        'asc'=>'idFamilia.familia',
                                        'desc'=>'idFamilia.familia DESC',
                                ),
                '*',
                        ),
                ),
                'pagination'=>array(
                        'pageSize'=>100,
                ),
                'keyAttribute'=>'id_familia',
                'totalItemCount'=>3,
        ));


En el ejemplo le agregue el valor 3 porque se que es la cantidad de registros que te retorna la consulta, pero es aquí donde deberás arreglártelas para calcular este valor y pasárselo dinamicamente.

PD: Estoy seguro de la causa mas no si es la única solución.
Saludos.
0

#4 User is offline   IRCSASW 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 65
  • Joined: 01-September 11
  • Location:Cancún, México.

Posted 31 May 2013 - 01:26 PM

Jaja, ok, entonces mientras le doy por ahí, a ver si alguien más da otra idea mientras.

Gracias.
Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México
0

#5 User is offline   Aaron Meis S. 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 21-June 13

Posted 25 June 2013 - 01:11 PM

bueno aquí tendrías que agregar a tus consultas una mas que te cuente los registros que seria algo así en sql SELECT COUNT (*) FROM TABLAACONTAR el resultado de este query es un numero que es el numero total de registros de la tabla lo metes en una variable y lo pasas a tu array
eturn new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>array(
'attributes'=>array(
'familia_search'=>array(
'asc'=>'idFamilia.familia',
'desc'=>'idFamilia.familia DESC',
),
'*',
),
),
'pagination'=>array(
'pageSize'=>100,
),
'keyAttribute'=>'id_familia',
'totalItemCount'=>$rows,
));
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