2010-03-02 6 views
2

J'ai un objet métier personnalisé qui surcharge la fonction .ToString(). Il implémente aussi IFormattable.ToString, donc je peux définir mes propres formats personnalisés.Formats personnalisés .ToString() dans les rapports .rdlc

Cette approche semble fonctionner partout dans mon application, à l'exception des rapports .rdlc. Par exemple, j'ai un champ de texte sur un rapport avec l'expression suivante:

=Fields!MyField.Value.ToString("lr") 

« lr » est un format personnalisé J'ai créé. Lors de l'exécution du rapport, je reçois toujours #Error comme sortie. J'ai placé des points d'arrêt dans ma fonction .ToString et j'ai parcouru le code pendant que le rapport est en cours d'exécution, et je sais que la fonction renvoie la valeur correcte, mais le rapport ne semble tout simplement pas pouvoir la recevoir et l'afficher.

+0

Avez-vous essayé 'Fields (" MyField "). Value.ToString (" lr ")'? Est-ce que ça donne le même résultat (ça devrait)? –

+0

Pas de chance, malheureusement. En fait, plus je regarde ça, plus il me semble que passer un paramètre à une fonction dans un textbox rdlc n'est pas possible. Appeler .ToString() semble fonctionner, mais appeler .ToString ("lr") produit #Error. Quelqu'un peut-il confirmer si c'est le cas? – matt

Répondre

1

Il est possible de faire différemment dans le rapport rdlc que vous pouvez utiliser le code VB. Cliquez simplement sur le rapport avec le bouton droit de la souris. Lorsque le menu contextuel d'où vous entrez les paramètres, allez à Proprties. En cliquant dessus, vous devriez voir un onglet avec quelques pages à onglets. Aller à la page de l'onglet « Code » une fonction il droit vous VB doit être quelque chose comme ça

Public Function ParseVal(ByVal val As Object) As String 
    Dim MyClass As obj = CType(val, MyClass) 
    return obj.ToString("lr") 
    End Function 

Ensuite, appelez la fonction dans votre zone de texte comme celui-ci

= Code.ParseVal(Fields!MyField.Value) 

post-scriptum Je ne suis pas très sûr si le code VB fonctionne correctement juste le tester et s'il est nécessaire réécrire. Si une autre erreur se produit, veuillez l'afficher pour voir quel est le problème.

Questions connexes