【问题标题】:Microsoft WinForm ReportViewer from List列表中的 Microsoft WinForm ReportViewer
【发布时间】:2010-10-23 15:50:29
【问题描述】:

谁能提供代码片段、教程链接或有关如何从对象列表在 Microsoft 报告中创建报告的信息?

我有以下 Dog 类:

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

然后,在窗口窗体中,我有一个 ReportViewer 对象,我想从 MyNS.Dog 对象的 List 中填充它,如下所示:

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

有什么想法吗?

谢谢!

【问题讨论】:

    标签: c# winforms reporting reportviewer


    【解决方案1】:

    对于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。在您的表单类中,将以下代码添加到类的顶部。您可以在 public partial class 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()的参数。

    【讨论】:

    • 这是一个救生员!在 VS 2019 中像魅力一样工作!非常感谢分步指南。
    【解决方案2】:

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

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

    【讨论】:

    • 太棒了。去试试,会告诉你的。
    • 如果我想将这些项目放在列表中的文本框中,报告 (RDLC) 本身中的这些文本框的参数是什么?
    猜你喜欢
    • 2014-05-31
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多