ActiveReports Mise en forme conditionnelle - Visibilité de l'image
-
20-09-2019 - |
Question
Dans ActiveReports, comment puis-je modifier la mise en forme en fonction des valeurs dans les données du rapport?
Plus précisément, je veux montrer ou cacher les photos sur la base d'une valeur dans les données. Le rapport se lie à une liste d'objets via un ensemble à sa propriété DataSource. Ces objets ont une propriété Condition
avec des valeurs « pauvres », « Normal », etc. J'ai quelques images dans le rapport qui correspondent aux différentes conditions, et je veux cacher toutes les images, sauf dans celui correspondant à la valeur.
Dois-je souscrire à l'événement Format
pour la section de détail? Si oui, comment puis-je obtenir les données « record » en cours?
La solution
Ok, je ne sais toujours pas comment obtenir l'objet de données en cours, mais j'ai découvert que vous pouvez utiliser la propriété Fields
du rapport pour récupérer les valeurs de l'objet de données en cours.
Le code ci-dessous souscrit à l'événement Format
de la section de détail. Fields["Condition"].Value
obtient la valeur de la propriété Condition
de l'objet de données en cours (qui se trouve être une valeur ENUM).
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);
}
Modifier
Je l'ai appris depuis que l'accès à la collection Fields d'un événement Format est contre les règles de conception de ActiveReports, car il ne fonctionne pas dans certains cas d'angle bizarre. Je vais maintenant utiliser cette méthode à la place: http://www.datadynamics.com /forums/ShowPost.aspx?PostID=133642#133642
DataDynamics a une demande de fonctionnalité 22786 pour fournir un accès aux objets de données des événements de format.