ActiveReports Formato condicional - Visibilidad Imagen
-
20-09-2019 - |
Pregunta
En ActiveReports, ¿cómo puedo cambiar el formato basado en los valores de los datos del informe?
En concreto, quiero mostrar u ocultar las imágenes en base a un valor de los datos. El informe se une a una lista de objetos a través de un conjunto de su propiedad DataSource. Estos objetos tienen una propiedad Condition
con los valores "pobre", "Normal", etc. Tengo algunas fotos en el informe que correspondan a las diferentes condiciones, y quiero ocultar todas las imágenes excepto la correspondiente al valor.
¿Debo suscribirse al evento Format
para la sección de detalle? Si es así, ¿Cómo llego a los datos del mensaje "actual"?
Solución
Ok, yo todavía no sé cómo conseguir el objeto de datos actual, pero he descubierto que puede utilizar la propiedad Fields
del informe para recuperar valores fuera del objeto de datos actual.
El código de abajo suscribe al evento Format
de la sección de detalle. Fields["Condition"].Value
obtiene el valor de la propiedad Condition
del objeto de datos actual (que pasa a ser un valor de enumeración).
private void detail_Format(object sender, EventArgs e)
{
Condition? condition = Fields["Condition"].Value as Condition?;
conditionUnknownPicture.Visible = (condition == Condition.Unknown);
conditionPoorPicture.Visible = (condition == Condition.Poor);
conditionNormalPicture.Visible = (condition == Condition.Normal);
conditionNewPicture.Visible = (condition == Condition.New);
}
Editar
He aprendido que el acceso a la colección Fields de un evento Format está en contra de las reglas de diseño ActiveReports, ya que no funciona en ciertos casos de esquina extraños. Ahora utilizo este método en lugar: http://www.datadynamics.com /forums/ShowPost.aspx?PostID=133642#133642
DataDynamics tiene una solicitud de función 22786 para proporcionar acceso a los objetos de datos de eventos de formato.