Controles Dinámicos Objetos Persistentes Objetos persistentes ● Mantener un objeto entre postbacks ● Utilidad ViewState <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"> ● Guardar elAlumno = new ClaseAlumno { Nombre = "Pepe", Apellidos = "García López" }; ViewState["elAlumno"] = elAlumno; ● Leer elAlumno = (ClaseAlumno) ViewState["elAlumno"]; Objetos persistentes ● Convertir un objeto en texto: Serialización [Serializable] public class ClaseAlumno { private int _nombre; private ClaseExpediente _expediente; ... [Serializable] public class ClaseExpediente { int _codigoEstudio; ... Objetos persistentes ● Variables de sesión y aplicación laAlumna = new ClaseAlumno { Nombre="Laura", Apellidos="Gómez" }; Session["laAlumna"] = laAlumna; laAlumna = (ClaseAlumno)Session["laAlumna"]; Controles dinámicos ● Generar controles “al vuelo” Control miControl = new Control(); miControl.Propiedad = "Valor"; Contenedor.Controls.Add(miControl); Controles dinámicos ● Panel Panel Datos = new Panel(); Datos.ID = "DatosAlumno"; Datos.CssClass = "panelDatos"; Contenedor.Controls.Add(Datos); ● Caja de texto TextBox textBoxTitulo = new TextBox(); textBoxTitulo.ID = "TextBoxTitulo"; textBoxTitulo.Text = "Pon el titulo"; Datos.Controls.Add(textBoxTitulo); Controles dinámicos ● Etiquetas Label titulo = new Label(); titulo.Text = "Titulo"; titulo.AssociatedControlID = "TextBoxTitulo"; Datos.Controls.Add(titulo); ● Botones Button botonAceptar = new Button(); botonAceptar.Text = "Aceptar"; botonAceptar.CausesValidation = false; Datos.Controls.Add(botonAceptar); Controles dinámicos ● Eventos botonAceptar.Click += new EventHandler(botonAceptar_Click); void botonAceptar_Click(object sender, EventArgs e) { // Gestionar evento }