【问题标题】:Requirements for design-time data source in Report Viewer 2010Report Viewer 2010 中设计时数据源的要求
【发布时间】:2010-10-18 02:49:40
【问题描述】:

在 Report Viewer 2010 中将数据集添加到 .rdlc 报告时,要在“数据源”下拉列表中列出自定义数据源有什么要求?

从屏幕抓取中可以看出,出于某种原因,它列出了来自各种引用程序集的潜在来源,但我看不出它为什么选择这些的明显模式。

“GeneralDataSet”是有道理的,因为它是一个强类型的 Dataset 类,但我很确定其他大多数不是,但设计对话框仍然列出它们。

我希望推出自己的自定义数据源,并希望它可以从此列表中选择。

【问题讨论】:

    标签: dataset reportviewer


    【解决方案1】:

    我认为它会扫描您的项目文件,寻找返回 Lists 等的方法。

    比如:

    public class Person
    {
        public string name { get; set; }
        public int age { get; set; }
    }
    
    public class GetPeople
    {
       public List<Person> GetPeopleList()
       {
          return null;
       }
    
       public IEnumerable<Person> GetPeopleIEnumerable()
       {
          return null;
       }
    
       public IQueryable<Person> GetPeopleIQueryable()
       {
          return null;
       }
    }
    

    所有三个都出现了,所以选择吧。 (代码刚刚被淘汰,忽略不良名称/做法:))

    但是当您使用 ReportViewer 时,您需要手动设置数据集。从我发现的报告中选择它基本上只是告诉它期望什么数据。所以添加一个 ObjectDataSource 或者只是在后面的代码中设置它。

    【讨论】:

      【解决方案2】:

      我注意到,如果源作为属性而不是方法公开,则不会出现数据集。

      也就是说,这不是一个可选择的数据源。

      public class FooData 
      {
          public List<string> Data {get;set;}
      }
      

      但这将显示为数据源

      public class FooData 
      {
          public List<string> GetData();
      }
      

      【讨论】:

        【解决方案3】:

        我也遇到了这个问题,

        我的班级正在返回列表,但不会显示在数据源列表中。

        然后我添加了一个无参数构造函数,它开始显示(之前没有)我认为这是为了让报表查看器可以创建它并实例化它。

        例如:

        public MyObject()
        {
        }
        

        【讨论】:

        • 如果您已经有一个需要参数的构造函数,那将是有意义的
        【解决方案4】:

        从 List 继承的自定义列表也有类似的问题。 如果您的系统允许您在不使用接口的情况下进行继承,您可以解决它。我们的没有。

        包含此类的项目将出现在 DataSource 下拉列表中,而该类本身将出现在 DataSet 下拉列表中:

        public class AccountList : List<AccountData>
        {}
        

        此类不会显示为 Dataset,这会阻止其项目显示为 DataSource(注意 AccountData 前面的“I”):

        public class AccountList : List<IAccountData>
        {}
        

        这很痛苦,因为我们系统的其他方面要求列表继承自接口而不是具体类。我不知道为什么它不起作用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多