He desarrollado un control personalizado que amplía ListBox. La idea es que el control 'recuerda' modificaciones a sus elementos que ocurrieron en el lado del cliente, p. como resultado de una solicitud AJAX.Control personalizado ASP.NET: ¿cuándo se llama a LoadPostData()?
La forma en que funciona es que el control también representa una entrada oculta, y el resultado de la solicitud AJAX se almacena en la entrada oculta. Esto se publica de nuevo, y el método LoadPostData() del control busca la entrada oculta, y si la entrada oculta tiene datos, crea la colección ListItem de ella.
Esta perfectamente funciona siempre y cuando el usuario ha realizado una selección de la lista. Si no lo han hecho, no se llama al método LoadPostData() y, en consecuencia, no se crea la nueva colección ListItem. (Establecí esto usando el depurador)
Supongo que el método LoadPostData solo se invoca si la recopilación de datos POST incluye datos correspondientes a UniqueID del control (es decir, el atributo 'nombre' en HTML). Si el usuario no ha realizado una selección en el cuadro de lista, no se incluye nada en los datos de la publicación para UniqueID del cuadro de lista y no se llama a LoadPostData(). ¿Es eso correcto?
¿Alguien puede sugerir cómo puedo asegurarme de que mi método LoadPostData() personalizado de ListBox se llame en cada devolución, independientemente de si el usuario ha hecho una selección?
Gracias de antemano - Estoy realmente atrapado con este.
David
No es en absoluto extraño que funciona sólo cuando se selecciona un elemento. El método LoadPostData() solo se invoca si postdata contiene un elemento con el mismo nombre que el UniqueID del control, lo que no sucederá si el usuario no ha seleccionado un elemento. – David
Bueno, ¡mi primera reacción fue que me pareció extraño cuando comencé a escribirla! :) ¿Intentó agregar el campo ficticio en RenderContents? De esta forma, siempre se llamará a LoadPostData. –
Gracias por su sugerencia sobre la creación de un elemento 'falso' con el mismo atributo de nombre que UniqueID del control. De alguna manera veo lo que quieres decir. En mi opinión, no es tan limpio como la solución que he ofrecido. ¿Qué piensas? – David