来自List的Microsoft WinForm ReportViewer

时间:2009-05-04 15:09:42

标签: c# winforms reporting reportviewer

任何人都可以提供代码段,教程链接或有关如何从对象列表中在Microsoft报表中创建报表的信息吗?

我有以下狗类:

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

然后,在Window Forms中,我有一个ReportViewer对象,我想从 MyNS.Dog 对象的列表中填充这样的对象:

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

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

对于winform reportviewer:包含以下代码

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;
        }
    }

构建解决方案,在表单上添加reportviewer控件,在reportviewer smarttag上创建新报表并选择对象数据源,展开类并检查Dog类作为对象数据源。再次选择您的reportviewer控件,并选择新创建的报表,自动创建DogBindingSource。在表单类中,将以下代码添加到类的顶部。您可以在公共部分类Form1:Form {语句之后但在构造函数

之前使用第一行
private DogBll _dogBll = new DogBll();

在formload()上,添加:

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

对于webform reportviewer:你应该提供一个返回Dog列表的函数,在这个类中它应该包含一个默认的构造函数。

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;
      }
    }
} 

添加报表查看器向导控件,选择数据源作为刚创建的新函数,GetDogs(),根据Dog类中的3个公共属性定义报表。在表单中添加对象数据源,指向报表以使用对象数据源。最后,在对象数据源中设置GetDogs()的参数。

答案 1 :(得分:2)

对于本地报告,您可以像这样指定数据源:

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