使用自定义Class对象列表作为crystal report的数据源

时间:2011-05-24 14:22:04

标签: vb.net class crystal-reports

我正在尝试使用自己的自定义类来设计报表。

我找到了链接:

1。)How to work in Crystal Report with Object Data Source?

2。)Use .net object as data source in Crystal Report 2008

3。)Binding object with List<> to Crystal Report

4。)How to assign Custom class as datasource in crystal report

他们非常有帮助,但我在设计报告时遇到了第一步,因为我的自定义类的属性未列在水晶报表设计视图的字段列表中。

我的自定义类的示例:

class UserType
    public property UIN as integer...
    public property Title as string...
end class
class User
    public property UIN as Integer...
    public property Name as string...
    public property Password as String...
    public property Type as UserType...
end class

当我将类对象添加到crystal报表时,我没有从字段列表中的用户类中获取usertype字段。

那么如何将usertype字段添加到我的字段列表中?或者我必须采取另一种方法?

修改

我想使用它的原因是:as 1.)显示用户可以键入关键字
的表单 2.)程序使用LINQ
按照关键字过滤记录 3.)当用户点击打印按钮时,我想将过滤后的记录设置为我的报告的数据源

3 个答案:

答案 0 :(得分:1)

  • 使用与您的类匹配的列创建数据集,然后分配 通常是您报告的数据集。
  • 当您的对象类加载了数据,和/或使用用户输入的值进行过滤(使用linq等过滤后)。 这样做:

    dim yourDataset as dataset ' this is your typed dataset
    Dim dr As datarow
    For n As Integer = 0 To yourClass.Count - 1
        dr = yourDataset.tables("TableName").NewRow
        dr("ColumnNameOne") = yourClass(n).PropertyName
        dr("ColumnNameTwo") = yourClass(n).PropertyName
    
        yourDataset.tables("TableName").Rows.Add(dr)
    Next
    
    ' bind the datasource
    crystalreport.SetDatasource(ds)
    

答案 1 :(得分:0)

您可以尝试将对象序列化为XML,提供XSD,然后使用Crystal Report的XML驱动程序连接到它。报告将“看到”对象为两个表:一个用于User,一个用于UserType。您将在报告中包含两个“表”,并使用internal_id字段链接表。

答案 2 :(得分:0)

为什么不为报告分配强类型数据集并节省很多麻烦?