FixedDocument作为报告引擎?

时间:2012-10-08 06:05:24

标签: c# wpf reporting

我想知道如何使用WPF的FixedDocument作为报告引擎。有没有人有这样的经历?有哪些陷阱?

我正在开发的应用程序,必须打印一些报告。这些是订单,发票 - 也就是说,没有什么不寻常之处。最近,我查看了FlowDocumentFixedDocumet概念,我发现FixedDocumet理论上是我需要的。

然而,我已经草拟了一份样本报告,并遇到了一个问题:

    <PageContent>
        <FixedPage Width="793.76" Height="1122.56" Margin="50,50,50,50" PrintTicket="">
            <ListView Width="Auto" Height="Auto" ItemsSource="{Binding}">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="First name" 
                                        Width="200"
                                        DisplayMemberBinding="{Binding FirstName}"/>
                        <GridViewColumn Header="Last name" 
                                        Width="200"
                                        DisplayMemberBinding="{Binding LastName}"/>
                    </GridView>
                </ListView.View>
            </ListView>
        </FixedPage>
    </PageContent>

Footer of fixed document

报告中通常会将长表格式数据拆分为多个页面(例如,包含1000个项目的发票)。此外,用户通常有一个选项,在每个页面上重复一个表头,或者不重复。

使用FixedPage / ItemsControl是否有任何开箱即用的方式? 如果不是,如何在运行时定义,要呈现的当前项是不在页面?只要固定页面只是一组UIElements,我就可以动态生成它们。

P.S。我知道不同的商业报道引擎,问题不在于它们。

1 个答案:

答案 0 :(得分:3)

我的经验表明,在打印/自定义解决方案方面,FixedDocument完全没用。

首先,它甚至不支持默认打印到多个页面。您需要为该功能定制DocumentPaginator。

我的两分钱是,不要使用它。使用ReportViewer。很灵活。

使用FixedDocument完成所有操作很有可能,但成本/时间不值得。它与比较ASM和高级语言几乎相同。是的,你可以在ASM中做所有事情,但这不值得。

FixedDocument不能真正称为报告引擎,因为它没有任何“引擎式”功能。

相关问题