我尝试使用 FastReport 开源软件根据我将提供给报告的数据构建报告。
我在演示中找到了我想要的东西(https://github.com/FastReports/FastReport/tree/master/Demos/OpenSource/DataFromBusinessObject/DataFromBusinessObject)
在这个演示中,我在报告文件中看到BusinessObjectDataSource使用了 a,这似乎就是我想要使用的。
但是,我没有看到在社区设计器中添加此类源的方法。我需要手动添加所有这些吗?或者有没有办法生成所需的标记?我在他们的网站上找不到解决方案。
我找到了一种方法,通过手动制作所需的 xml,如下所示:
<BusinessObjectDataSource Name="Invoices" ReferenceName="Invoices" Enabled="true">
<Column Name="Reference" DataType="System.String"/>
<Column Name="Date" DataType="System.String"/>
<Column Name="CompanyName" DataType="System.String"/>
<Column Name="InvoiceEmail" DataType="System.String"/>
<Column Name="VAT" DataType="System.String"/>
<Column Name="Street" DataType="System.String"/>
<Column Name="Number" DataType="System.String"/>
<Column Name="City" DataType="System.String"/>
<Column Name="ZipCode" DataType="System.String"/>
<Column Name="Country" DataType="System.String"/>
<Column Name="TotalPrice" DataType="System.Decimal"/>
<Column Name="VATValue" DataType="System.Decimal"/>
<Column Name="VATPercentage" DataType="System.Decimal"/>
<Column Name="VATComment" DataType="System.String"/>
</BusinessObjectDataSource>
Run Code Online (Sandbox Code Playgroud)
唯一的缺点是,如果我的对象发生变化,我需要更新它(但至少是有效的!)
小智 6
我找到了一种生成空报告的方法,其中包含从业务对象生成的字段。您只需创建一个空的报表对象,在其 Dictionary 属性上调用“RegisterBusinessObject()”,然后保存报表本身:
var report = new Report();
report.Dictionary.RegisterBusinessObject(
new List<Invoice>(), // a (empty) list of objects
"Invoices", // name of dataset
2, // depth of navigation into properties
true // enable data source
);
report.save(@"invoiceReport.frx");
Run Code Online (Sandbox Code Playgroud)
如果您的对象发生变化,您仍然需要更新报告描述,但至少您不必手动编码!