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

3
当向Report Viewer 2010中的.rdlc报表添加数据集时,自定义数据源要想在“数据源”下拉列表中列出,需要满足哪些要求?
如屏幕截图所示,由于某种原因,它列出了来自各种引用程序集的潜在数据源,但我无法看到选择这些数据源的明显模式。
"GeneralDataSet"是一个强类型的数据集类,这很有意义,但我相信其他大部分数据源不是强类型的,然而设计对话框仍将它们列出。
我想要创建自己的自定义数据源,并希望可以从此列表中选择。
4个回答

0
我注意到如果源代码是作为属性而不是方法公开,数据集将不会出现。
也就是说,这无法成为可选择的数据源。
public class FooData 
{
    public List<string> Data {get;set;}
}

但这将显示为数据源

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

0

我也遇到了这个问题,

我的类返回的是列表,但在数据源列表中却没有显示。

后来我添加了一个无参构造函数,它就开始显示了(之前没有这个构造函数)。我猜测这是为了让报表查看器能够创建它的实例。

例如:

public MyObject()
{
}

如果你已经有一个需要参数的构造函数,那么这就是有意义的。 - David Gardiner

0

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

所以大概是这样的:

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或在代码后台中设置它。


0

我曾经遇到过一个类似的问题,那就是自定义列表继承自List。 如果你的系统允许你在不使用接口的情况下进行继承,那么你可以解决这个问题。但我们的系统不允许。

包含这个类的项目将会出现在数据源下拉菜单中,而这个类本身则会出现在数据集下拉菜单中:

public class AccountList : List<AccountData>
{}

这个类不会出现在数据集中,这样就可以防止它的项目出现在数据源中(请注意 AccountData 前面的 "I"):

public class AccountList : List<IAccountData>
{}

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接