在Report Viewer 2010中将数据集添加到.rdlc报表时,“数据源”下拉列表中列出的自定义数据源有哪些要求?
从屏幕抓取中可以看出,由于某种原因,它列出了来自各种引用程序集的潜在来源,但我看不出一个明显的模式,为什么它会选择这些。
'GeneralDataSet'是有意义的,因为它是一个强类型的数据集类,但我很确定其他大部分都没有,但设计对话框仍然列出它们。
我正在寻找自己的自定义数据源,并希望可以从此列表中选择它。
答案 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>
{}
这很痛苦,因为我们系统的其他方面要求列表继承自接口而不是具体类。我不知道为什么它不起作用。