Report Viewer 2010中对设计时数据源的要求

时间:2010-10-18 02:49:40

标签: dataset reportviewer

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

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

alt text

'GeneralDataSet'是有意义的,因为它是一个强类型的数据集类,但我很确定其他大部分都没有,但设计对话框仍然列出它们。

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

4 个答案:

答案 0 :(得分:0)

我认为它扫描你的项目文件,寻找返回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或者只是在后面的代码中设置它。

答案 1 :(得分:0)

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

即无法成为可选择的数据源。

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

但这将显示为数据源

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

答案 2 :(得分:0)

我也遇到了问题,

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

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

例如:

public MyObject()
{
}

答案 3 :(得分:0)

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

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

public class AccountList : List<AccountData>
{}

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

public class AccountList : List<IAccountData>
{}

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