【Stimulsoft Reports.WinForms教程】在运行时使用业务对象创建报表

【下载Stimulsoft Reports.Ultimate最新版本】

此示例显示如何使用代码中的Business Objects集合创建报表,Business Objects是一个对象类数据,使用它可以以不同的结构呈现数据:表,列表,数组等,FillBusinessObject方法创建并填充数据集合:

private ArrayList list = null;
 
private void FillBusinessObject()
{
    list = new ArrayList();
    list.Add(new BusinessEntity("name1", "alias1"));
    list.Add(new BusinessEntity("name2", "alias2"));
    list.Add(new BusinessEntity("name3", "alias3"));
}

创建数据,现在需要显示它,首先,在dictionary中创建一个新的报表和数据结构,从Business Object将数据传输到dictionary:

private void PrintDataGrid(DataGrid sender)
{
    StiReport report = new StiReport();
    report.ScriptLanguage = StiReportLanguageType.CSharp;
 
    //Add data to datastore
    report.RegData("MyList", list);
 
    //Fill dictionary
    report.Dictionary.Synchronize();
    StiPage page = report.Pages.Items[0];
 
...

将组件添加到报表模板,创建bands Header,数据和页脚,这些band用于放置带有文本的文本框或对Business Object字段的引用:

...
 
    //Create HeaderBand
    StiHeaderBand headerBand = new StiHeaderBand();
    headerBand.Name = "HeaderBand";
    page.Components.Add(headerBand);
 
    //Create Databand
    StiDataBand dataBand = new StiDataBand();
    dataBand.DataSourceName = "MyList";
    dataBand.Height = 0.5f;
    dataBand.Name = "DataBand";
    page.Components.Add(dataBand);
 
    StiDataSource dataSource = report.Dictionary.DataSources[0];
 
    //Create texts
    Double pos = 0;
    Double columnWidth = StiAlignValue.AlignToMinGrid(page.Width / dataSource.Columns.Count, 0.1, true);
    int nameIndex = 1;
    foreach (StiDataColumn column in dataSource.Columns)
    {
        if (column.Name == "_ID" || column.Name == "_Current")continue;
 
        //Create text on header
        StiText headerText = new StiText(new RectangleD(pos, 0, columnWidth, 0.5f));
        headerText.Text.Value = column.Name;
        headerText.HorAlignment = StiTextHorAlignment.Center;
        headerText.Name = "HeaderText" + nameIndex.ToString();
        headerText.Brush = new StiSolidBrush(Color.MediumSeaGreen);
        headerText.Border.Side = StiBorderSides.All;
        headerBand.Components.Add(headerText);
 
        //Create text on Data Band
        StiText dataText = new StiText(new RectangleD(pos, 0, columnWidth, 0.5f));
        dataText.Text.Value = "{MyList." + column.Name + "}";
        dataText.Name = "DataText" + nameIndex.ToString();
        dataText.Border.Side = StiBorderSides.All;
 
        dataBand.Components.Add(dataText);
 
        pos += columnWidth;
 
        nameIndex ++;
    }
 
    //Create FooterBand
    StiFooterBand footerBand = new StiFooterBand();
    footerBand.Height = 0.5f;
    footerBand.Name = "FooterBand";
    page.Components.Add(footerBand);
 
    //Create text on footer
    StiText footerText = new StiText(new RectangleD(0, 0, page.Width, 0.5f));
    footerText.Text.Value = "Count - {Count()}";
    footerText.HorAlignment = StiTextHorAlignment.Right;
    footerText.Name = "FooterText";
    footerText.Brush = new StiSolidBrush(Color.LightGreen);
    footerBand.Components.Add(footerText);
 
...

在此之后,您可以呈现报表并在查看器中显示它(或调用报表设计器):

...
 
    //Render without progress bar
    report.Render(false);
 
    report.Show();
 
    //For checking created report you can uncomment this line
    //report.Design();
}

示例代码的结果如下图所示:

Stimulsoft

查看原文,下载示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值