Microsoft Reporting: définition des paramètres du sous-rapport dans le code
Comment puis-je définir un paramètre d'un sous-rapport? J'ai réussi à accroché moi-même jusqu'à la SubreportProcessing cas, je peux trouver le bon sous-rapport par le biais d'e.ReportPath, et je peux ajouter des sources de données par le biais de l'e.Les sources de données.Ajouter. Mais je ne trouve aucun moyen de l'ajout de paramètres de rapport??
J'ai trouvé des gens ce qui suggère d'ajouter à la maîtrise de rapport, mais je n'ai pas vraiment envie de faire que, depuis le rapport maître ne devrait pas avoir à être connecté à la sous-rapport à tous les autres que c'est l'habillage de la sous-rapport.
Je suis en utilisant un rapport en tant que modèle master, l'impression du nom du rapport, les numéros de page etc. Et le sous-rapport est le rapport lui-même. Et si seulement je pouvais trouver un moyen de définir ces paramètres de rapport du sous-rapport, je serais bon pour aller...
Précisions: Création/Définir les paramètres n'est pas le problème. Le problème est de définir leurs valeurs. J'ai pensé que la chose naturelle à faire était de le faire dans le SubreportProcessing événement. Et le SubreportProcessingEventArgs faire, en fait, un des Paramètres de la propriété. Mais il est en lecture seule! Alors, comment utilisez-vous? Comment puis-je définir leur valeur?
source d'informationauteur Svish
Vous devez vous connecter pour publier un commentaire.
Il ne fonctionne pas mais il est sûr persnickety.
Première chose que je recommande est de développer vos rapports .rdl. Beaucoup plus facile à tester les rapports de cette façon. Vous pouvez également obtenir les sous-paramètres mis en place et testé comme rdl, chaque paramètre du sous-rapport est également défini comme un paramètre du rapport parent. Une fois que vous obtenez les rapports, y compris les sous-rapports de travail de cette façon, vous pouvez renommer le .rdl rdlc et ajouter la rdlc fichiers de votre ReportViewer Projet. Pas d'autres changements nécessaires. Utiliser les noms de la rdl sources de données comme les noms de source de données dans votre code à fournir des données pour le rapport dans la SubreportProcessing gestionnaire d'événement.
Vous n'avez pas affecter des valeurs à l'passées en paramètre. Le sous-état s'en est. (On dirait que l'étape qui vous manque est d'ajouter les paramètres pour le rapport parent ainsi que le sous-état comme mentionné ci-dessus.) Vous pouvez évaluer les paramètres et de les utiliser comme paramètres de requête pour obtenir la source de données à ajouter.
Vous devez penser au sujet de la source de données comme sa sur un inconnu dimension d'un sous-état. Vous aurez à fouiller pendant le débogage dans le gestionnaire d'événements pour voir ce que je veux dire. Certaines de ces valeurs dans votre demande sera facilement disponible, d'autres que vous utilisez facilement ailleurs jeter objet non trouvé des exceptions. Par exemple, j'ai créer un jeu de données dans une instance d'une classe créée sur mes applications formulaire principal. J'utilise l'ensemble de données tout au long de ma demande. Dans le SubreportProcessing gestionnaire d'événement je ne peux pas utiliser l'ensemble de données commun, donc, je dois créer une nouvelle instance de la table dont j'ai besoin pour le rapport et de le remplir. Dans le rapport principal, je serais en mesure d'accéder à l'ensemble de données commun. Il y a d'autres limitations de ce genre. Suffit de retrouver votre chemin à travers.
Ici est la SubreportProcessing gestionnaire d'événements à partir d'un travail VB.NET ReportViewer application. Montre un peu de façons différentes pour obtenir la source de données d'un sous-rapport. subreport1 construit une ligne de table de l'application business objects, subreport2, fournit des données le rapport exige sans paramètre, subreport3 est du mensonge subreport2, mais évalue l'un des paramètres transmis à la sous-état pour une utilisation en date de valeur requises par la requête qui crée le ReportDataSource.
Récemment, j'ai eu le même problème et avec tous les recherche je n'ai pas trouvé quelque chose d'utile, mais finalement, je suis parvenu à une solution pour cela.
J'ai créé une classe ayant tous les paramètres dans le sous-état que ses propriétés(on peut appeler ça un DTO)
Ensuite utilisé une liste de ce type, comme une autre source de données dans le rapport principal, puis dans "propriétés du sous-rapport' ajout d'un paramètre pour chaque paramètre dans le sous-rapport et a choisi les champs correspondants à partir de la source de données que leurs valeurs.
puis quand le chargement du rapport de convertir l'entrée(liste des Employés) à une liste de MyDto et définissez-la comme les rapports de la source de données :
Et...
Il a fait le tour pour moi 🙂 j'espère que cela aide quelqu'un.
J'ai eu un problème similaire que j'avais besoin de passer des Propriétés.Les paramètres.... valeur à ajouter le chemin d'accès dans la base de données. Pour ce faire, j'ai dû définir une propriété dans le rapport principal et d'utiliser cette propriété pour définir la deuxième propriété du sous-rapport. Le réglage de la propriété principale, puis définit à son tour le sous-état de la propriété. VOUS POUVEZ définir la propriété principale dans le code comme suit:
Supposons que vous avez un ReportViewer nom de rv, puis nous code:
Je sais que c'est une vieille question qui a été marqué comme réponse, mais depuis que je suis à la recherche de ce aujourd'hui et j'ai vu qu'il avait été commenté dans les derniers mois, j'ai pensé que je jetterais un suivi de la réponse.
Afin de rendre le sous-état dans le contexte de chaque enregistrement sur le rapport principal, vous devez déclarer un
SubreportProcessingEventHandler
et puis à l'intérieur de ce gestionnaire de charger le jeu de données pour chaque instance de la sous-rapport.SubreportProcessingEventArgs
a une collection de paramètres qui est transmis depuis le rapport parent lorsque l'événement est déclenché.Donc, si vous avez configuré le sous-état des paramètres sur le rapport principal avec comme paramètres nommés liées à des champs sur le rapport principal, les valeurs sont accessibles dans le sous-rapport est rendu.
Ici est une très bonne écriture qui explique beaucoup plus clairement.
Vous pouvez les ajouter via la définition xml. J'utilise xml pour créer un rapport basé sur une sélection de sous-rapports et d'autres options. Je peux coller le code ici lundi si vous souhaitez regarder cette solution.
Edit: Vous pouvez définir des valeurs dans le sous-rapport dans le fichier XML avant de déployer le rapport. Ce n'est pas très flexible et je fais l'hypothèse que, si vous voulez demander ces valeurs, vous aurez très probablement besoin d'eux sur le rapport parent.
Si vous voulez voir ce que le XML ressemble, ajouter un sous-rapport, entrez des valeurs dans les sous-propriétés de rapport > paramètres, puis faire un afficher le code.
Au lieu d'utiliser l' =Paramètres!StartDate.Valeur je suppose que vous voulez mettre une valeur réelle comme sur la date de fin.
Après à la recherche et à la recherche, je suis arrivé à la conclusion que le réglage des paramètres d'un sous-rapport, dans le code, ce n'est pas possible. Sauf si vous faites quelque chose de fantaisie comme le début de l'édition xml de la définition de rapport avant de le charger ou quelque chose comme ça.
(Mais si quelqu'un d'autre il faut savoir que je me trompe, merci de ne répondre parce que je suis toujours très curieux de le savoir!)
Svish - je ne suis pas sûr de quel côté de la plomberie vous rencontrez des problèmes avec.
Pour ajouter des paramètres à l'état de parent de l'ouvrir puis cliquez droit sur le sous-rapport et sélectionnez Propriétés > Paramètres.
Vous pouvez ensuite définir des noms de paramètres et de leur attribuer une valeur, par exemple
De ce côté-ci de la plomberie les paramètres d'obtenir leur valeur du rapport parent de la source de données.
Pour ajouter des paramètres à un sous-rapport, ouvrez le sous-état et de la barre d'outils, sélectionnez le Rapport > Paramètres de Rapport
Ici, vous définissez un paramètre pour recevoir le paramètre du rapport parent, par exemple
Pour ce qu'il sonne comme vous voulez ne peut pas vous faire de suite avec un sous-rapport et avoir un rapport de toute façon? Les informations que vous essayez de s'enrouler autour du rapport des sons idéal pour à peu, y compris dans les en-têtes et pieds de page du rapport.