10
votes

Fournir des données d'une classe de code au concepteur de services de rapport dans VS 2013

J'essaie de créer un rapport de services de reporting SQL Server local ( .rdlc fichier) et connectez ce rapport à certains ensembles de données que je génère dans le code (aucune connexion directe SQL Server). < / p>

i Créez un ReportDataProvider Classe avec des méthodes d'instance qui renvoient ilist pour divers ensembles de critères - mais je ne peux pas sembler trouver un moyen de faire de ces données Fourniture de méthodes apparaissent dans le concepteur de services de reporting à l'intérieur de Visual Studio 2013.

Lorsque je regarde la boîte de dialogue qui apparaît après avoir cliqué sur Ajouter un jeu de données dans les données Neude dans les données Données de rapport Fenêtre Explorateur, je vois Une tonne de mes classes énumérées là-bas - mais pas ma classe de fournisseur de données.

Entrez la description de l'image ici

Y a-t-il quelque chose de spécial que je dois être conscient de (rendre la classe statique ? Décorer avec un certain attribut?) Pour qu'il apparaisse dans cette liste déroulante des sources de données possibles? J'ai essayé diverses choses, mais j'ai échoué à trouver un moyen de faire fonctionner cela correctement ...


0 commentaires

3 Réponses :


3
votes

Je fais des recherches et j'essaie différentes façons d'ajouter des cours. Malheureusement, cela se produit ne peut pas voir les classes statiques fortes> dans ce concepteur. J'ai essayé différentes manières mais pas de chance.

Pour les classes non statiques Ce manuel fonctionne pour moi à chaque fois, même avec interfaces code> comme iliste code>, mais je ne le représente pas Ici: p>

  1. Assurez-vous que l'espace de noms avec vos classes de rapport de données disponibles dans votre projet avec des fichiers .rdlc. Peut être que vous devez ajouter une référence. Li>
  2. Ecrire une classe de rapport de données et une solution de reconstruction. Li>
  3. Fermer et réouvert les fichiers .rdlc de votre VS. li> ol>

    i Utilisation de VS 2013 Ultimate Update 2. p>

    Ceci est mes classes: p>

    using System.Collections.Generic;
    
    namespace YourReportNamespace
    {
        public class ReportClass
        {
            public List<string> TestReportData()
            {
                return new List<string>();
            }
            public static List<string> StaticTestReportData()
            {
                return new List<string>();
            }
        }
    
    
        public class ReportWithFieldsClass 
        {
            private List<string> Data = new List<string>();
    
            public List<string> TestReportData()
            {
                return Data;
            }
    
            public List<string> TestReportData2()
            {
                return Data;
            }
    
            public static List<string> StaticTestReportData()
            {
                return new List<string>();
            }
        }
    
        public static class ReportWithFieldsStaticClass //This class will not appear
        {
            private static List<string> Data = new List<string>();
    
            public static List<string> StaticTestReportDataFromField()
            {
                return Data;
            }
            public static List<string> StaticTestReportData()
            {
                return new List<string>();
            }
        }
    }
    


2 commentaires

Merci pour vos efforts - Malheureusement, c'est à peu près ce que j'ai essayé aussi - et cela ne fonctionne jamais pour moi. Peu importe si je fais la classe ou les méthodes statique ou non, si je les mettit dans le même assemblage que le rapport ou une autre (référencée) - je ne vois jamais ma classe mentionnée comme une valide datasource .....


Lorsque je cherche autour de vous, je trouve ce Réponse . Maby C'est la réponse à votre problème? Aussi loin que vous utilisez du type générique.



0
votes

eu un problème similaire. Trouvé s'il est réussi à obtenir une construction sans erreurs, mon espace de noms semblerait sélectionner dans les sources de données.


0 commentaires

0
votes

J'ai eu le même problème et j'ai découvert un autre cas qui pourrait être facile à manquer. Dans mon cas, les méthodes de retour de la liste de la classe contenant la liste avaient un constructeur unique avec les paramètres requis et il ne s'affichage pas sur la liste déroulante DataSource. Après avoir ajouté un constructeur sans paramètre à ma classe et à la reconstruction, il est maintenant visible!

Cela pourrait avoir à voir avec la manière dont l'interface utilisateur RDLC analyse les méthodes éligibles, il essaie probablement d'instancier la classe dans le processus.


0 commentaires