2019年01月20日 17:34
原创作品,转载时请务必以超链接形式标明文章原始出处,否则将追究法律责任。
本节我们看一下疗养信息管理界面,无图无真相,先上图。
UI代码很easy,如下,我就不多说了。
<Base:WindowBase x:Class="HealthyInfomation.Windows.RecuperationPlan" 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:HealthyInfomation.Windows" mc:Ignorable="d" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" xmlns:Base="clr-namespace:HealthyInformation.FrameWork;assembly=HealthyInformation.FrameWork" Title="疗养计划" Height="610" Width="800"> <Grid Margin="5"> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <Grid Grid.Row="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Text="疗养院:" Grid.Column="0"></TextBlock> <ComboBox Grid.Column="1" Width="150" SelectedValue="{Binding SanatoriumID,Mode=TwoWay}" ItemsSource="{Binding SanatoriumList,Mode=OneWay}" DisplayMemberPath="Name" SelectedValuePath="TransactionNumber"></ComboBox> <TextBlock Text="开始时间:" Grid.Column="2" Margin="20,0,0,0"></TextBlock> <DatePicker Width="100" Grid.Column="3" SelectedDate="{Binding StartDate,Mode=TwoWay}"></DatePicker> <TextBlock Text="结束时间:" Grid.Column="4" Margin="5,0,0,0"></TextBlock> <DatePicker Width="100" Grid.Column="5" SelectedDate="{Binding EndDate,Mode=TwoWay}"></DatePicker> <Button Command="{Binding SearchCommand,Mode=OneWay}" Content="查询" Grid.Column="6" Margin="20,0,0,0" Style="{DynamicResource btn-primary}"></Button> </Grid> <DataGrid x:Name="DG_AviationMedicine" Grid.Row="1" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" Cursor="Hand" Margin="0,5,0,0" AlternatingRowBackground="#CCCCCC" SelectedItem="{Binding SelectedRecuperationPlan,Mode=TwoWay}" ItemsSource="{Binding RecuperationPlanList}"> <DataGrid.Columns> <DataGridTextColumn Header="疗养院名称" Binding="{Binding SanatoriumName, Mode=OneWay}" MinWidth="120"/> <DataGridTextColumn Header="带队领导" Binding="{Binding LeaderName, Mode=OneWay}"/> <DataGridTextColumn Header="责任医师" Binding="{Binding AviationMedicineName, Mode=OneWay}"/> <DataGridTextColumn Header="入院时间" Binding="{Binding StartDate, Mode=OneWay,StringFormat=yyyy-MM-dd}"/> <DataGridTextColumn Header="出院时间" Binding="{Binding EndDate,Mode=OneWay,StringFormat=yyyy-MM-dd}" MinWidth="200"/> <DataGridTemplateColumn Header="操作" Width="250"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Button Command="{Binding ModifyCommand,Mode=OneWay,RelativeSource={RelativeSource AncestorType={x:Type Window}}}" CommandParameter="{Binding}" Content="修改" Style="{StaticResource btn-info}"></Button> <Button Command="{Binding RemoveCommand,Mode=OneWay,RelativeSource={RelativeSource AncestorType={x:Type Window}}}" CommandParameter="{Binding}" Content="删除" Style="{StaticResource btn-danger}" Margin="5,0,0,0"></Button> <Button Command="{Binding PrintCommand,Mode=OneWay,RelativeSource={RelativeSource AncestorType={x:Type Window}}}" CommandParameter="{Binding}" Content="打印" Style="{StaticResource btn-primary}" Margin="5,0,0,0"></Button> </StackPanel> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> <Grid Grid.Row="2" Margin="0,5,0,5"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> <Button Command="{Binding NewCommand,Mode=OneWay}" Content="新增" Style="{StaticResource btn-success}" HorizontalAlignment="Left"></Button> </StackPanel> </Grid> </Grid> </Base:WindowBase>
依然是MVVM模式,后台cs代码我就不贴出来了,我们主要看一下修改界面。
大家注意了,这里有个打印按钮,那么打印在WPF中是怎么实现的呢?其实就是使用微软的report。我们总共设计了三个报表,一个主报表,两个子报表。
空勤人员列表
随行人员列表
接下来我们看一下后台cs代码
private async void BuildReportData(int key) { response = await this.facade.GetRecuperationInformation(key); ReportViewer.LocalReport.SubreportProcessing += LocalReport_SubreportProcessing; ReportDataSource reportDataSource = new ReportDataSource(); reportDataSource.Name = "DataSet1"; reportDataSource.Value = new List<RecuperationInformationResponse> { response }; ReportViewer.LocalReport.DataSources.Add(reportDataSource); ReportViewer.LocalReport.ReportEmbeddedResource = "HealthyInfomation.Report.Recuperation.rdlc"; ReportViewer.ProcessingMode = ProcessingMode.Local; ReportViewer.RefreshReport(); } private void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e) { if (e.ReportPath == "RecuperationMember") { response.RecuperationMemberList = this.ProcessMemberList(response.RecuperationMemberList); e.DataSources.Add(new ReportDataSource("DataSet1", response.RecuperationMemberList)); } else { response.RecuperationAccompanyList = this.ProcessMemberList(response.RecuperationAccompanyList); e.DataSources.Add(new ReportDataSource("DataSet2", response.RecuperationAccompanyList)); } }
先设置主报表的数据源,再设置子报表的数据源,子报表在事件LocalReport_SubreportProcessing中处理。
OK,就是这么简单我们看一下效果
看起来还不错,好的今天就到这里,想要demo的必须掏银子。
发表评论
匿名
用户评论
暂无评论