代码之家  ›  专栏  ›  技术社区  ›  Pablo Santa Cruz

列表中的Microsoft WinForm ReportViewer

  •  4
  • Pablo Santa Cruz  · 技术社区  · 15 年前

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

    我有以下狗类:

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

    然后,在窗口窗体中,我有一个ReportViewer对象,我希望从 属于 MyNS狗 这样的对象:

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

    有什么想法吗?

    谢谢!

    2 回复  |  直到 12 年前
        1
  •  2
  •   Meta-Knight    15 年前

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

    var reportViewer = New ReportViewer();
    var reportDataSource = New ReportDataSource("MyNS_Dog", MyDogs);
    reportViewer.LocalReport.DataSources.Add(reportDataSource);
    
        2
  •  4
  •   gavin    13 年前

    对于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智能标记上,创建新报表并选择对象数据源,展开类并检查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()的参数。