Tengo un problema por el cual el estado de visualización de un repetidor, es decir, los controles dentro del repetidor, no mantienen su estado de visualización.Mantenimiento del estado de visualización de un repetidor
Tengo el siguiente:
Repetidor 1:
<asp:Repeater ID="rptImages" runat="server">
<ItemTemplate>
<asp:LinkButton Text="Add" CommandName="Add" CommandArgument=<%# Eval("ID") %> runat="server" />
</ItemTemplate>
</asp:Repeater>
Cuando el botón de enlace se hace clic en el valor de la CommandArgument se almacena en un campo oculto en la página.
En la devolución de datos no puedo obtener el valor del campo oculto hasta que se haya cargado el controlador de eventos prerender. Así que en mi caso prerender me agarra el valor del campo oculto y lo almacenan en una propiedad de lista, así:
if (!string.IsNullOrEmpty(this.SelectedImageIDsInput.Text)) {
this.ImageList.Add(this.SelectedImageIDsInput.Text);
}
Y la propiedad lista se ve así:
public List<string> ImageList {
get {
if (this.ViewState["ImageList"] == null) {
this.ViewState["ImageList"] = new List<string>();
}
return (List<string>)(this.ViewState["ImageList"]);
}
set { this.ViewState["ImageString"] = value; }
}
Una vez que haya almacenado el valor de mi propiedad en la lista I unir mi segundo repetidor (de nuevo dentro del evento prerender):
this.rptSelectedImages.DataSource = this.LightBoxControl.ImageList;
this.rptSelectedImages.DataBind();
el segundo repetidor tiene una lista desplegable y un cuadro de texto dentro de ella. El problema es que no se mantiene el viewstate de estos controles secundarios. Supongo que es porque con cada devolución de datos estoy reencuadernando el repetidor, por lo tanto, se reconstruye. Lo que no sé es cómo puedo evitar esto? La propiedad ImageList solo se actualiza con una devolución de datos, así que obviamente tengo que volver a enlazar el repetidor con cada devolución de datos. ¿De qué otra forma se puede hacer?
Cualquier ayuda sería muy apreciada.
Gracias Al
Hola CodeKing. Sin embargo, hay dos problemas: no puedo obtener el valor del campo oculto tan pronto como el evento Init, más la propiedad ImageList solo se puede actualizar en la devolución de datos ... – higgsy
En ese caso, debería volver a enlazar el segundo repetidor en cada llamada usando el valor en el campo oculto. – TheCodeKing
Hola CodeKing: eso es exactamente lo que estoy haciendo, ¿o no? ¿Estoy malinterpretando tu respuesta? Actualmente espero hasta la entrega para obtener el valor del campo oculto y luego volver a vincular el repetidor. El problema con esto es que el estado de vista de los controles en el repetidor no persiste en las devoluciones ... – higgsy