• 水晶报表填充.Net Objects数据源


    Crystal Reports(水晶报表)是一款商务智能(BI)软件,主要用于设计及产生报表。是业内最专业、功能最强的报表系统。

    查看网络资料及课本图书,鲜有介绍通过.NET Objects作为数据源填充水晶报表的示例。本文将通过两个简单的示例演示水晶报表填充.Net Objects数据源的过程。

    示例一:打印学生信息(一个.NET Objects数据源的填充)

    示例效果:

    image

    Student.cs

    using System;
    using System.Collections.Generic;
    using System.Web;
     
    namespace CrystalReportsDemo
    {
        public class Student
        {
            public Student(string studentNo,string studentName,string sex,int age)
            {
                this.StudentNo = studentNo;
                this.StudentName = studentName;
                this.Sex = sex;
                this.Age = age;
            }
            public string StudentNo
            { set; get; }
            public string StudentName
            { set; get; }
            public string Sex
            { get; private set; }
            public int Age
            { get; private set; }
        }
    }

    将其编译后,即可通过数据库专家将其作为数据源导入到字段资源管理器。

    image

    绘制报表样式并插入数据库字段:

    image

    在Default.aspx页面拖入CrystalReportViewer控件:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CrystalReportsDemo._Default" %>
     
    <%@ Register assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" namespace="CrystalDecisions.Web" tagprefix="CR" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
            <CR:CrystalReportViewer ID="crvReport" runat="server" AutoDataBind="true" />
        
        </div>
        </form>
    </body>
    </html>

    Default.aspx.cs

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    namespace CrystalReportsDemo
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                FillReport();
            }
            private void FillReport()
            {
                List<Student> studentList = new List<Student>();
                studentList.Add(new Student("200901001", "学生一", "男", 23));
                studentList.Add(new Student("200901002", "学生二", "男", 24));
                studentList.Add(new Student("200901003", "学生三", "女", 22));
                studentList.Add(new Student("200901004", "学生四", "男", 23));
                studentList.Add(new Student("200901005", "学生五", "女", 25));
                studentList.Add(new Student("200901006", "学生六", "男", 23));
                CrStudents studentsReport = new CrStudents();
                studentsReport.SetDataSource(studentList);
                crvReport.ReportSource = studentsReport;
            }
        }
    }

    示例二:打印学生成绩(多个.NET Objects数据源的填充)

    示例效果:

    image

    Subject.cs

    using System;
    using System.Collections.Generic;
    using System.Web;
     
    namespace CrystalReportsDemo
    {
        public class Subject
        {
            public Subject(string subjectName,string subjectType,double result,string comment)
            {
                this.SubjectName = subjectName;
                this.SubjectType = subjectType;
                this.Result = result;
                this.Comment = comment;
            }
            public string SubjectName
            { set; get; }
            public string SubjectType
            { set; get; }
            public double Result
            { set; get; }
            public string Comment
            { set; get; }
        }
    }

    主报表:(CrSupReport.rpt)

    image

    子报表:(CrSubReport.rpt)

    image

    Default2.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default2.aspx.cs" Inherits="CrystalReportsDemo.Default2" %>
     
    <%@ Register Assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
        Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <CR:CrystalReportViewer ID="crvReport2" runat="server" AutoDataBind="true" />
        </div>
        </form>
    </body>
    </html>

    Default2.aspx.cs

    using System;
    using System.Collections.Generic;
     
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using CrystalDecisions.CrystalReports.Engine;
     
    namespace CrystalReportsDemo
    {
        public partial class Default2 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                FillReport();
            }
            private void FillReport()
            {
                List<Student> studentList = new List<Student>();
                studentList.Add(new Student("200901001", "学生一", "男", 23));
                ReportDocument supReport = new CrSupReport();
                supReport.SetDataSource(studentList);
                crvReport2.ReportSource = supReport;
     
                List<Subject> subjectList = new List<Subject>();
                subjectList.Add(new Subject("语文","文科",90,"评语"));
                subjectList.Add(new Subject("数学", "理科", 90, "评语"));
                subjectList.Add(new Subject("工程学", "工科", 80, "评语"));
                subjectList.Add(new Subject("现代医学", "医学", 90, "评语"));
     
                ReportDocument subReport = supReport.Subreports["CrSubReport"];
                subReport.SetDataSource(subjectList);
     
            }
        }
    }

  • 相关阅读:
    剑指Offer 19 正则表达式匹配
    剑指Offer 37 序列化二叉树
    剑指Offer 36 二叉搜索树与双向链表
    剑指Offer 35 复杂链表的复制
    剑指Offer 45 把数组排成最小的数
    华为有AI,这场转型战有点大
    NLP&深度学习:近期趋势概述
    2018年度10大新兴技术:人工智能、量子计算、增强现实等
    外媒评李开复的《AI·未来》:四大浪潮正在席卷全球
    商汤科技汤晓鸥:其实不存在AI行业,唯一存在的是“AI+“行业
  • 原文地址:https://www.cnblogs.com/hanzhaoxin/p/3684289.html
Copyright © 2020-2023  润新知