本指南提供了一个示例,此示例说明在 打印预览 期间如何直接对报表数据排序,这是通过接管 XRControl.PreviewClick 事件来实现的。 要查看总说明,请参阅 打印预览的鼠标事件

要允许最终用户在打印预览期间对报表数据排序,则执行下列操作。

  1. 启动 MS Visual Studio (2005、2008 或 2010),并且新建一个或者打开一个现有的 Windows 窗体应用程序

  2. 添加新空白报表 到项目中。

  3. 绑定报表 到 Northwind 示例数据库 (与 XtraReports 安装一起提供的 nwind.mdb 文件) 的 "OrderDetails" 视图。

  4. 以所需的方式调整报表的布局。

  5. 为了定义默认的排序,切换到 Group and Sort 面板。 单击 Add a Sort(添加排序),并选择 ProductName 字段。

    注意,在 PageHeader(页眉) 带区中,相应的 XRTableCell 被以 * 号标记。

  6. 现在,接管页眉单元格的 XRControl.PreviewClick 事件…

    … 并为事件提供下列代码。

    C#CopyCode image复制代码
    using System;
    using DevExpress.XtraReports.UI;
    // ...
    
    private XRTableCell currentSortCell;
    
    public XtraReport1() {
        InitializeComponent();
        currentSortCell = xrTableCell1;
    }
    
    private void OnCellPreviewClick(object sender, PreviewMouseEventArgs e) {
        // Turn off sorting.
        this.Detail.SortFields.Clear();
        currentSortCell.Text = currentSortCell.Text.Remove(currentSortCell.Text.Length - 1, 1);
    
        // Create a new field to sort.
        GroupField grField = new GroupField();
        grField.FieldName = ((XRControl)sender).Tag.ToString();
        grField.SortOrder = XRColumnSortOrder.Ascending;
    
        // Add sorting.
        this.Detail.SortFields.Add(grField);
        ((XRLabel)sender).Text = ((XRLabel)sender).Text + "*";
        currentSortCell = (XRTableCell)sender;
    
        // Recreate the report document.
        this.CreateDocument();
    }
    
    Visual BasicCopyCode image复制代码
    Imports System
    Imports DevExpress.XtraReports.UI
    ' ...
    
    Private currentSortCell As XRTableCell
    
    Public Sub New()
        InitializeComponent()
        currentSortCell = xrTableCell1
    End Sub
    
    Private Sub OnCellPreviewClick(ByVal sender As Object, ByVal e As PreviewMouseEventArgs) _ 
    Handles xrTableCell1.PreviewClick, xrTableCell4.PreviewClick, xrTableCell7.PreviewClick, _ 
    xrTableCell2.PreviewClick, xrTableCell13.PreviewClick
        ' Turn off sorting.
        Me.Detail.SortFields.Clear()
        currentSortCell.Text = currentSortCell.Text.Remove(currentSortCell.Text.Length - 1, 1)
    
        ' Create a new field to sort.
        Dim grField As New GroupField()
        grField.FieldName = (CType(sender, XRControl)).Tag.ToString()
        grField.SortOrder = XRColumnSortOrder.Ascending
    
        ' Add sorting.
        Me.Detail.SortFields.Add(grField)
        CType(sender, XRLabel).Text = (CType(sender, XRLabel)).Text & "*"
        currentSortCell = CType(sender, XRTableCell)
    
        ' Recreate the report document.
        Me.CreateDocument()
    End Sub
    

现在报表已经就绪。 运行此应用程序并查看结果: 当预览时单击列标头,则按照相应的字段进行排序。

CodeCentralShow Me

在 DevExpress Code Central 数据库中可以找到完整的示例项目,网址是 http://www.devexpress.com/example=E770。 取决于目标平台类型 (ASP.NET、WinForms 等),可以在线运行本示例,或者下载自动可执行的示例。

Expand image参阅