【问题标题】:Using list of custom Class object as data source for crystal report使用自定义类对象列表作为水晶报表的数据源
【发布时间】:2012-04-25 05:59:53
【问题描述】:

我正在尝试寻找使用我自己的自定义类来设计报告的方法。

我找到了链接:

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

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

那么如何将用户类型字段添加到我的字段列表中?还是我必须采取其他方法?

编辑:

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

【问题讨论】:

    标签: vb.net class crystal-reports


    【解决方案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)
      

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我们如何在设计时将对象序列化为 xml?还是我们在运行时做?
      • 要设计报告,您可以使用“静态”XML 和 XSD 文档。在运行时,您可以将其指向返回两个文档的 Url 或使用此方法:dotnetslackers.com/articles/xml/…
      【解决方案3】:

      你为什么不给你的报表分配一个强类型数据集来省去很多麻烦呢?

      【讨论】:

      • 是否符合我的工作条件...你能提供一些链接吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多