Social Icons

viernes, 30 de octubre de 2009

El ViewState se pierde extendiendo el ContentByQueryWebPart

Pues parece que nuestro amigos han vuelto a hacer de las suyas al programar el CQWP y han pensado que es una gran idea cargarse el viewstate. Asi que cuando tú inocentemente le añades tu variable la próxima vez que se carga el webpart te das cuenta de que ha desaparecido mágicamente.

Bueno, la solución parcial que hemos encontrado es sobreescribir los métodos SaveViewState y LoadViewState por aquello de quedar por encima.

No es demasiado elegante, pero sí muy efectivo:

        public string Filter { get; set; }

protected override object SaveViewState()
{
object[] myViewState = new object[2];
myViewState[0] = base.SaveViewState();
myViewState[1] = Filter;

return myViewState;
}

protected override void LoadViewState(object savedState)
{
object[] myViewState = null;
if (savedState != null)
{
myViewState = (object[])savedState;
base.LoadViewState(myViewState[0]);
Filter += (string)myViewState[1];
}
}

Espero haber sido más rápido que Luis en postear, jijijiji

No hay comentarios: