2009-05-04 7 views
4

Quelqu'un peut-il fournir un extrait de code, un lien didactique ou des informations sur la création d'un rapport dans Microsoft Report à partir d'une liste d'objets?Microsoft WinForm ReportViewer à partir de la liste

J'ai la suivante classe Dog:

namespace MyNS 
{ 
    public class Dog 
    { 
     public int Legs { get; set; } 
     public string Name { get; set; } 
     public string Breed { get; set; } 
    } 
} 

Ensuite, dans les formes de la fenêtre, j'ai un objetct ReportViewer que je voudrais remplir à partir d'une Liste de MyNS.Dog objets comme celui-ci:

List<MyNS.Dog> MyDogs = new List<MyNS.Dog>(); 
// populate array here 
// and use it as datasource for ReportViewer 

Des idées?

Merci!

Répondre

2

Pour un rapport local, vous pouvez spécifier votre source de données comme ceci:

var reportViewer = New ReportViewer(); 
var reportDataSource = New ReportDataSource("MyNS_Dog", MyDogs); 
reportViewer.LocalReport.DataSources.Add(reportDataSource); 
+0

Impressionnant. Va essayer et te le feras savoir. –

+0

Si je voulais ces éléments dans une zone de texte dans une liste, quels seraient les paramètres pour ces zones de texte dans le rapport (RDLC) lui-même? –

4

Pour WinForm ReportViewer: inclure le code suivant

public class Dog 
    { 

     int legs; 

     public int Legs 
     { 
      get { return legs; } 
      set { legs = value; } 
     } 
     string name; 

     public string Name 
     { 
      get { return name; } 
      set { name = value; } 
     } 
     string breed; 

     public string Breed 
     { 
      get { return breed; } 
      set { breed = value; } 
     } 

    } 

    public class DogBll 
    { 
     List<Dog> myDog; 
     public DogBll() 
     { 
      myDog = new List<Dog>(); 
      myDog.Add(new Dog() { Legs = 10, Name = "mimi", Breed = "german" }); 
      myDog.Add(new Dog() { Legs = 4, Name = "momo", Breed = "english" }); 
     } 
     public List<Dog> GetDogs() 
     { 
      return myDog; 
     } 
    } 

construire votre solution, ajoutez un contrôle ReportViewer à votre formulaire, sur le compte-rendu smarttag de reportviewer, créez un nouveau rapport et choisissez la source de données d'objet, développez votre classe et vérifiez la classe Dog comme source de données d'objet. sélectionnez à nouveau votre contrôle reportviewer et choisissez le rapport nouvellement créé, une DogBindingSource est automatiquement créée. Dans votre classe de formulaire, ajoutez le code suivant en haut de la classe. Vous pouvez utiliser la première ligne après la classe partielle publique Form1: formulaire {déclaration, mais avant que le constructeur

private DogBll _dogBll = new DogBll(); 

Sur formload(), ajoutez:

this.DogBindingSource.DataSource = _dogBll.GetDogs(); 

Pour formulaire en ligne ReportViewer: Vous devez fournir un fonction qui retournera une liste de Dog, dans cette classe il devrait contenir un constructeur par défaut.

namespace MyNS 
{ 
    public class Dog 
    { 
     public int Legs { get; set; } 
     public string Name { get; set; } 
     public string Breed { get; set; } 
    } 
    public class DogBll 
    { 
     public DogBll() 
     { 
     } 
     public List<Dog> GetDogs(List<Dog> myDog)//make sure you set the parameter in object datasource 
     { 
      return myDog; 
     } 
    } 
} 

ajouter un contrôle de l'assistant de visionneuse de rapports, sélectionnez la source de données que la nouvelle fonction que vous venez de créer, GetDogs(), définir votre rapport basé sur les 3 propriétés publiques dans votre classe Dog. Ajoutez une source de données d'objet dans votre formulaire, pointez le rapport pour utiliser la source de données d'objet. Enfin, définissez le paramètre de GetDogs() dans la source de données de l'objet.

Questions connexes