一、建立数据集:
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.
总结:
重复就是力量,带着问题去思考!!!