Pregunta

Estoy cargando una serie de controles en el evento Page_Load. Sin embargo, tengo que recrear esos controles cada carga de la página, que medios de almacenamiento de los datos en otro lugar. Esto es engorroso.

protected void Page_Load(object sender, EventArgs e)
{
   MyControl control = (MyControl)LoadControl(...);
   control.Initialize(GlobalClass.controlData);
   //^gives the control the data it had previously.  
   //Or use ViewState["controlData"] if serializable.
   Controls.Add(control);
}

Me siento como que debería usar if (!IsPostBack) {}, pero no sé cómo, ni por qué.

Por el contrario, si coloco los controles en el margen de beneficio, a continuación, los controles parecen permanecer persistente. Por ejemplo, un botón de aumento de precio se acordará de cualquier cambio en su propiedad Text (creo?).

<asp:Button ID="buttonText" runat="server" 
            Text="Text Segment" onclick="buttonText_Click" />

¿Cómo se mantiene algún tipo de persistencia con controles agregados dinámicamente, como los controles añaden a través de margen de ganancia? Esto me ahorraría mucho trabajo y frustración.

Gracias.

(He codificado por una pequeña eternidad, pero cuanto más lo hago ASP.NET, más confundido me vuelvo. ¿Qué es exactamente lo contrario de lo que he entendido cómo aprender a :-P trabajo.)

¿Fue útil?

Solución

Para los controles de carga dinámica, si se carga durante el evento Page_Init, a continuación, puede añadirlos a la ViewState y que será capaz de conservar el estado de la devolución de datos de devolución de datos.

Otros consejos

Yo entiendo su punto. Sí, esto es engorroso, pero eso es cómo funciona una tecnología sin estado.

No hay manera de conseguir el mismo bahaviour de controles estáticos (los que se pone en el formato HTML).

Siga los consejos que he dado en esta respuesta:

controles

Acceso crean dinámicamente (c #)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top