11
votes

RDLC - Ajout d'une source de données dans VS2010

Salutations.

J'ai un fichier RDLC et je veux ajouter une source de données, bien que sans aucune chance jusqu'à présent. La source de données est une classe personnalisée écrite par moi-même (juste pour ajouter, nous le faisons tout le temps). Nous avons récemment converti sur le format RDLC VS2010 qui a provoqué des problèmes, mais nous avons apporté des modifications à notre mise en œuvre qui entraînent des problèmes plus importants.

Donc, retour à la question à la main, lorsque j'essaie d'ajouter ma source de données à la liste de DigoryDataSource de la vue RDLC dans VS2010, il ne fait que rien, mais il ajoute la source de données à la liste des sources de données, mais Vous ne pouvez pas le sélectionner dans la liste déroulante de la vue RDLC, ce qui signifie que je ne peux pas ajouter la source de données du tout.

Quelqu'un a-t-il rencontré ce problème? Y a-t-il quelque chose que je dois vérifier? J'ai cherché avec ferveur et n'avait pas de chance.


0 commentaires

6 Réponses :


18
votes

Il semble y avoir un peu de magie noire ici. Ou au moins je n'ai pas compris toute l'incantation pour que cela se produise de manière fiable.

Je pense que j'avais un problème similaire. Je ne sais pas si cela vous aidera, mais voici comment je l'ai entendu.

Dans le concepteur de rapport VS2010, utilisez Affichage-> Signaler des données pour afficher le volet Données de rapport.

Cliquez sur le bouton Nouveau et choisissez DataSet ... Pour obtenir la boîte de dialogue Propriétés du jeu de données.

Nommez votre jeu de données, si vous avez déjà fait cela auparavant, vous savez probablement que le nom du jeu de données ici doit correspondre au nom fourni dans le code lorsque vous liez votre ReportDatasource.

La nouvelle partie que je viens d'essayer est de cliquer sur le bouton Nouveau ... En regard de la liste déroulante Source de données. L'assistant résultant vous promène en sélectionnant votre class de montage et CLR (utilisez la case à cocher pour sélectionner votre classe).

Lorsque l'assistant est terminé, mon nouveau jeu de données est apparu.

Une chose à noter: la première fois que j'ai essayé de reproduire cela, l'assistant a été achevé sans ajouter mon jeu de données. Je suis retourné à ma définition de la classe et je l'ai décoré avec [Datacontract] et [Datamember] Attributs, puis re-a ran l'assistant et il semblait fonctionner bien.

Peut-être que quelqu'un avec des connaissances plus profondes peut commenter pourquoi ces attributs font ce travail, ou pourquoi l'assistant échoue silencieusement sans eux.


1 commentaires

"Magie noire" - meilleure description que j'ai lisée pour tous ces énormes bugs dans RDLC-Reporting ...



16
votes

Votre objet source de données doit inclure un type de données natif comme une propriété de la classe, sinon elle ne vous permet pas de l'ajouter. Drôle, hein!


4 commentaires

Très étrange, mais ça marche comme un charme. J'espère que personne ne m'inquiète d'avoir un int inutile nommé foo sur ma source de données ... :)


M'a sauvé des heures de cheveux. Merci!


... c'est absolument sournois. Merci!


J'ai testé cela et cela a résolu mon problème. Assurez-vous simplement de construire le projet avant d'essayer d'ajouter la source de données à nouveau.



0
votes

J'ai vu cela arriver lorsque votre choix final dans une procédure stockée tire d'une table Temp / Memory. Vous devez simuler le concepteur en ajoutant un factice Select 0 comme myCol1int, '' en tant que myCol2string, etc. Une fois que vous avez créé le jeu de données, vous pouvez ensuite supprimer ce sélect factice. Une autre caractéristique merveilleuse et fabuleuse dans VS! Ils possèdent la DB, ils possèdent l'IDE, mais ...


1 commentaires

Désolé, c'est en fait le pire, vous devez commenter le code qui déclare et utilise la table en mémoire, puis ajoutez le factice sélectionnée. Soupir....



2
votes

Je n'ai pas pu ajouter le DataSource, après avoir suivi l'assistant (nouveau bouton), la source de données n'apparaît pas dans la liste déroulante. Ce que j'ai fait était d'ajouter une propriété avec une classe VS de type primitive, puis de montrer la source de données correcte.

étrange de devoir faire cela, mais j'ai trouvé une autre manière.


0 commentaires

1
votes

Si vous utilisez une procédure stockée, remplacez tout à l'intérieur de la procédure avec une ligne SELECT en utilisant aucune tables / fonctions source. Je ne pouvais pas le faire travailler avec une procédure stockée qui renvoya des données de la table Temp ou de la table normale.


0 commentaires

0
votes

Si l'objet Source de données ajouté n'est pas affiché sur ReportData, puis: 1. Cliquez avec le bouton droit de la souris sur RDLC et cliquez sur Ouvrir avec 2. Sélectionnez Editeur XML 3. Ajoutez votre jeu de données nécessaire à la main.

Après cette actualisation ReportData et vous verrez l'objet DataSource sur la liste.


0 commentaires