【机房合作】WPF报表

一、建立数据集:

1.新建项——数据集——修改名称
这里写图片描述

2.添加数据集——TableAdapter
这里写图片描述

3.选择数据连接——新建连接
这里写图片描述

4.服务器名——登录到服务器(使用 SQL Server身份验证)——输入用户名、密码——连接数据库——测试连接
这里写图片描述

5.显示测试连接成功——确定
这里写图片描述

6.下一步
这里写图片描述

7.下一步
这里写图片描述

8.输入SQL语句:Select * from T_Check where Time between @StartTime and @EndTime
这里写图片描述

9.执行查询
这里写图片描述

10.更具自己数据库的现有数据输入2个时间值
这里写图片描述

11.查出来了,证明有记录——确定
这里写图片描述

12.下一步
这里写图片描述

13.下一步
这里写图片描述

14.完成
这里写图片描述

二、添加报表:

15.新建项——报表——输入名称
这里写图片描述

16.右击——插入——表
这里写图片描述

17.新建数据源
这里写图片描述

18.选择数据源类型——对象
这里写图片描述

19.选择数据对象——绑定对象
这里写图片描述

20.选择数据集相应属性——确定
这里写图片描述

21.绑定完之后的界面
这里写图片描述

三、建立报表代码篇:

22.在UI层需要添加2个引用 Microsoft.ReportViewer.WinForms和WindowsFormsIntegration
这里写图片描述

1.新建一个WPF窗体为 MaskLayer
MaskLayer.xaml

<UserControl x:Class="JfCooperate.管理员.Report.MaskLayer"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:JfCooperate"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300" Opacity="0.85" Background="#fbfcfc">
    <Grid>
        <TextBlock Text="正在生成报表..." VerticalAlignment="Center" HorizontalAlignment="Center"/>
    </Grid>
</UserControl>

MaskLayer.xaml

namespace JfCooperate.管理员.Report
{
    /// <summary>
    /// MaskLayer.xaml 的交互逻辑
    /// </summary>
    public partial class MaskLayer : UserControl
    {
        public MaskLayer()
        {
            InitializeComponent();
        }
    }
}

2.新建一个WPF窗体为ReportCtrl

ReportCtrl.xaml

<UserControl x:Class="JfCooperate.管理员.Report.ReportCtrl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:rv="clr-namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms"
              xmlns:local="clr-namespace:JfCooperate.管理员.Report"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <WindowsFormsHost>
            <rv:ReportViewer x:Name="ReportViewer"/>
        </WindowsFormsHost>
        <local:MaskLayer x:Name="maskLayer" Visibility="Collapsed"/>

    </Grid>
</UserControl>

ReportCtrl.xaml.cs

namespace JfCooperate.管理员.Report
{
    /// <summary>
    /// ReportCtrl.xaml 的交互逻辑
    /// </summary>
    public partial class ReportCtrl : UserControl
    {
        public ReportCtrl()
        {
            InitializeComponent();
            this.Loaded += ReportCtrl_Loaded;

            this.ReportViewer.RenderingComplete += ReportViewer_RenderingComplete;
        }

        private void ReportCtrl_Loaded(object sender, RoutedEventArgs e)
        {
            maskLayer.Visibility = Visibility.Visible;
            CheckEntity checkentity = new CheckEntity();
            CheckFacade checkfacade = new CheckFacade();
            List<CheckEntity> list = checkfacade.queryCheck(checkentity);//接收D层返回值
            if (list.Count != 0)
            {
                ReportDataSource reportDataSource = new ReportDataSource();
                //定义数据集名称
                reportDataSource.Name = "DataSet1";
                reportDataSource.Value = list;
                //说明reportViews承载的表名
                ReportViewer.LocalReport.ReportPath = Directory.GetCurrentDirectory() + "\\Report.rdlc";
                //添加报表数据源
                ReportViewer.LocalReport.DataSources.Add(reportDataSource);

                ReportViewer.RefreshReport();
            }

        }

        private void ReportViewer_RenderingComplete(object sender, Microsoft.Reporting.WinForms.RenderingCompleteEventArgs e)
        {
            maskLayer.Visibility = Visibility.Collapsed;
        }
    }
}

3.新建一个WPF窗体为:ReportWindow,来承载报表

ReportWindow.xaml

<Window x:Class="JfCooperate.管理员.Report.ReportWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:JfCooperate.管理员.Report"
        mc:Ignorable="d" WindowStartupLocation="CenterScreen"
        Title="报表" Height="279" Width="653.541">
    <Grid>
        <local:ReportCtrl/>
    </Grid>
</Window>

ReportWindow.xaml.cs

namespace JfCooperate.管理员.Report
{
    /// <summary>
    /// ReportWindow.xaml 的交互逻辑  Interaction logic for ReportWindow.xaml
    /// </summary>
    /// 

    public partial class ReportWindow : Window
    {
        public ReportWindow()
        {
            InitializeComponent();
        }

    }

四、完美显示:

23.
这里写图片描述

总结:

重复就是力量,带着问题去思考!!!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值