2008-10-06 17 views
6

Estoy tratando de crear un control personalizado que le guste a un control de "vista de cuadrícula" pero específicamente para objetos comerciales que implementen ciertas interfaces personalizadas.¿Cómo habilito ViewState para los controles personalizados secundarios cuando está deshabilitado en el elemento primario?

Al hacer esto me he encontrado con el siguiente problema.

Tengo un control que he desactivado viewstate activado (y no quiero volver a habilitarlo) y tiene un control secundario en el que quiero habilitar ViewState. Parece que no puedo hacer que Viewstate en el control infantil funcione porque sus padres están deshabilitados. ¿Alguien tiene alguna idea de cómo hacer que funcione?

Respuesta

7

No puede habilitar viewstate en un control que está dentro de otro control que tiene viewstate deshabilitado.

Su única opción es habilitarlo para el control externo, y luego desactivarlo para todos los controles dentro de él, excepto para el control que necesita viewstate.

La propiedad EnableViewState en cualquier contenedor anulará el comportamiento de todos los controles dentro de ese containter.

¡Buena suerte!

EDIT: es posible que desee mirar a sus CreateChildContols() método y enumerar los controles incapacitantes estado de vista a partir de ahí para cada uno de los controles dentro del control personalizado utilizando el propiedad EnableViewState.

+1

Jason es correcta, una vez que se desactiva por encima de usted, usted no puede activarlo más abajo. – Tom

0

Si está contento poniendo los datos en el ViewState manualmente (en lugar de dejar que ASP.NET preserve el estado de su control), puede colocar elementos directamente en el ViewState de la página, en lugar del ViewState de su controlar.

I.e. en lugar de decir:

this.ViewState["someKey"] = someValue; 

dicen:

this.Page.ViewState["someKey"] = someValue; 

Tenga cuidado sin embargo - si usted tiene más de una instancia de su control de la página, usted tiene que asegurarse de que utilizan diferentes teclas!

Cuestiones relacionadas