代码之家  ›  专栏  ›  技术社区  ›  David Gardiner

报表查看器2010中设计时数据源的要求

  •  3
  • David Gardiner  · 技术社区  · 15 年前

    将数据集添加到报表查看器2010中的.rdlc报表时,自定义数据源在“数据源”下拉列表中列出的要求是什么?

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

    alt text

    “GeneralDataSet”是一个强类型数据集类,这很有意义,但我敢肯定其他大多数都不是,但设计对话框仍然列出了它们。

    我希望滚动我自己的自定义数据源,并希望它可以从这个列表中选择。

    4 回复  |  直到 15 年前
        1
  •  0
  •   David Gardiner    13 年前

    我认为它会扫描您的项目文件,查找返回列表的方法<gt;等等。

    比如说:

    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
  •  0
  •   Jafin    15 年前

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

    ie这不是一个可选择的数据源。

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

    但这将显示为数据源

    public class FooData 
    {
        public List<string> GetData();
    }
    
        3
  •  0
  •   WraithNath    15 年前

    我也有点问题,

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

    如:

    public MyObject()
    {
    }
    
        4
  •  0
  •   Ric Bailey    13 年前

    我对从列表继承的自定义列表也有类似的问题。 如果您的系统允许您继承而不使用接口,则可以解决这个问题。我们的没有。

    包含此类的项目将出现在“数据源”下拉列表中,而类本身将出现在“数据集”下拉列表中:

    public class AccountList : List<AccountData>
    {}
    

    此类不会显示为数据集,这会阻止其项目显示为数据源(请注意AccountData前面的“I”:

    public class AccountList : List<IAccountData>
    {}
    

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

    推荐文章