Recargar Pagina Y Mantener Filters Del Gridview

Buenas. Tengo una vista ‘admin’ donde se muestran datos en un CGridView. En dicha tabla se harán búsquedas a menudo mediante los filters de la parte superior del Grid.

Por otro lado tengo un dropdownlist donde seleciono una cantidad de segundos tras los cuales se actualizará la página.

Lo que necesito es que al recargar la página se mantengan los filtros del CGridView y no se cómo hacerlo.

Estoy probando con javascript y jQuery. Lo último que probé fue lo siguiente.


Yii::app()->clientScript->registerScript('refresh', "$('.recargapag form').submit(function(){

		$.fn.yiiGridView.update('log-grid', {

		data: $(this).serialize()

	});

	return false;

});

");

Donde ‘recargapag’ es el nombre del formulario donde esta el dropdown y ‘log-grid’ es el id de mi Grid.

Agradezco ayuda!

Poco después de abrir este tema he dado con la respuesta. La pongo aquí para si alguien necesita usarla alguna vez.

He creado un archivo refresh.js con el siguiente método:


var t;


function refresh(numero)

{


window.clearInterval(t);

if (numero!='No'){

var tiempo=numero*1000;

t=setInterval("$.fn.yiiGridView.update('log-grid', {url:$.fn.yiiGridView.getUrl('log-grid'), data: $(this).serialize()})",tiempo);

}

La llamada al método refresh(numero) la realizo cuando en mi dropDownList con el parámetro onchange, y pasando el valor del select.


echo CHtml::beginForm('', 'get', array('name'=>'recargarpag'));

echo 'Actualizar página: ';

echo CHtml::dropDownList('tiemporecarga', Yii::app()->session['autoreloadtime'], array('No'=>'No','5'=>'5', '10'=>'10', '15'=>'15', '20'=>'20', '30'=>'30', '60'=>'60'), array('onchange'=>'refresh(this.value)'));

Por tanto queda claro que no es necesario recargar la página completa, con refrescar el GridView es suficiente. La función $.fn.yiiGridView.getUrl(‘log-grid’), es la que nos recoge la url con los parámetros de los filtros.

Espero que le sea útil a alguien. Saludos!