zoukankan      html  css  js  c++  java
  • SL复合表头报表实现(包含导出和打印)

          复合表头报表除了使用报表工具来实现外,在Silverlight里面还可以使用DataGrid和RadGridView来实现,这里介绍一下RadGridView如何实现复合表头的报表。

    首先来看代码实例:

       1、XAML代码    

    <UserControl x:Class="MyCharts.CircuitReportsNew"
    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"
    mc:Ignorable="d"
    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
    xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
    d:DesignHeight="543" d:DesignWidth="1100" Width="Auto" Height="Auto" >

    <Grid x:Name="LayoutRoot" Background="#FFE1E1E1">
    <Grid.RowDefinitions>
    <RowDefinition Height="40"></RowDefinition>
    <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>
    <Grid Name="gdSearch1">
    <Grid.RowDefinitions>
    <RowDefinition Height="40"></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="23"></ColumnDefinition>
    <ColumnDefinition Width="35"></ColumnDefinition>
    <ColumnDefinition Width="100"></ColumnDefinition>
    <ColumnDefinition Width="70"></ColumnDefinition>
    <ColumnDefinition Width="100"></ColumnDefinition>
    <ColumnDefinition Width="120"></ColumnDefinition>
    <ColumnDefinition Width="120"></ColumnDefinition>
    <ColumnDefinition Width="120"></ColumnDefinition>
    <ColumnDefinition Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <sdk:Label Grid.Column="1" Height="23" HorizontalAlignment="Right" Content="年份: " Name="lblYear" VerticalAlignment="Center" Width="60" />
    <telerik:RadDateTimePicker Grid.Column="2" HorizontalContentAlignment="Left" Name="rdtp_DataTime" Height="23" DateSelectionMode="Year" InputMode="DatePicker" Visibility="Visible"/>
    <sdk:Label Grid.Column="3" Name="lblMonth" Content="月份:" HorizontalAlignment="Right"></sdk:Label>
    <ComboBox Name="cbb_Month" Grid.Column="4" Height="23" Width="80">
    <ComboBoxItem Content="1-3月" Tag="1-3月" IsSelected="True" ></ComboBoxItem>
    <ComboBoxItem Content="4-6月" Tag="4-6月"></ComboBoxItem>
    <ComboBoxItem Content="7-9月" Tag="7-9月"></ComboBoxItem>
    <ComboBoxItem Content="10-12月" Tag="10-12月"></ComboBoxItem>
    </ComboBox>
    <Button Grid.Column="5" Content="确定" Height="23" Name="bt_Confirm" Width="75" Click="bt_Confirm_Click" />
    <Button Grid.Column="6" Content="打印" Height="23" Name="bt_Print" Width="75" Click="bt_Print_Click" />
    <Button Grid.Column="7" Content="导出" Height="23" Name="bt_Excel" Width="75" Click="bt_Excel_Click" />

    </Grid>
    <Grid Name="gdCircuitReport" Grid.Row="1" >
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
    <RowDefinition Height="30"></RowDefinition>
    <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>
    <TextBlock Name="txtBTitle" FontSize="17" FontWeight="Black" Grid.Row="0" Height="23" HorizontalAlignment="Center" Text="用户季报报表" VerticalAlignment="Center" />

    <telerik:RadGridView x:Name="rgv_list" Grid.Row="1" AutoExpandGroups="True"
    ShowColumnFooters="False" ShowGroupFooters="True"
    AutoGenerateColumns="False" ShowGroupPanel="False"
    IsReadOnly="True" CanUserFreezeColumns="False" RowIndicatorVisibility="Collapsed"
    CanUserResizeColumns="True" >
    <telerik:RadGridView.Columns>
    <telerik:GridViewDataColumn Width="*">
    <telerik:GridViewDataColumn.Header>
    <Grid Name="gdGrid4">
    <Grid.RowDefinitions >
    <RowDefinition Height="20*" />
    <RowDefinition Height="1" />
    <RowDefinition Height="20*" />
    <RowDefinition Height="1" />
    <RowDefinition Height="20*" />
    <RowDefinition Height="1" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions >
    <ColumnDefinition Width="50*" />
    <ColumnDefinition Width="1" />
    <ColumnDefinition Width="50*" />
    <ColumnDefinition Width="1" />
    <ColumnDefinition Width="50*" />
    <ColumnDefinition Width="1" />
    <ColumnDefinition Width="50*" />
    <ColumnDefinition Width="1" />
    <ColumnDefinition Width="50*" />
    <ColumnDefinition Width="1" />
    <ColumnDefinition Width="50*" />
    <ColumnDefinition Width="1" />
    <ColumnDefinition Width="50*" />
    <ColumnDefinition Width="1" />
    <ColumnDefinition Width="50*" />
    <ColumnDefinition Width="1" />
    <ColumnDefinition Width="50*" />
    <ColumnDefinition Width="1" />
    </Grid.ColumnDefinitions>
    <ContentPresenter   Content="2013电量报表"    VerticalAlignment="Center"    HorizontalAlignment="Center"     Grid.ColumnSpan="18" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Height="1" Visibility="Visible" Grid.Row="1" Grid.ColumnSpan="18" />
    <ContentPresenter Content="用户单位:阿迪锅" Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.ColumnSpan="4" Grid.Column="0" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="1" />
    <ContentPresenter Content="能源类型:用电" Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.ColumnSpan="4" Grid.Column="6" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="3" />
    <ContentPresenter Content="编号:43" Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.ColumnSpan="4" Grid.Column="13" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="5" />
    <ContentPresenter Content="编号" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="1" />
    <ContentPresenter Content="名称" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="2" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="3" />
    <ContentPresenter Content="名称" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="4" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="5" />
    <ContentPresenter Content="名称" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="6" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="7" />
    <ContentPresenter Content="名称" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="8" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="9" />
    <ContentPresenter Content="名称" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="10" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="11" />
    <ContentPresenter Content="名称" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="12" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="13" />
    <ContentPresenter Content="用电量" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="14" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="15" />
    <ContentPresenter Content="金额" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="16" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Visibility="Visible" Grid.Row="4" Grid.Column="17" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Height="1" Visibility="Visible" Grid.Row="3" Grid.ColumnSpan="18" />
    </Grid>
    </telerik:GridViewDataColumn.Header>
    <telerik:GridViewDataColumn.CellTemplate>

    <DataTemplate >
    <StackPanel Orientation="Horizontal" >
    <TextBlock Width="49" Text="{Binding L,Mode=TwoWay}" TextAlignment="Right" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Height="23" Visibility="Visible" />
    <TextBlock Width="49" Text="{Binding S,Mode=TwoWay}" TextAlignment="Right" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Height="23" Visibility="Visible" />
    <TextBlock Width="49" Text="{Binding M,Mode=TwoWay}" TextAlignment="Right" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Height="23" Visibility="Visible" />
    <TextBlock Width="49" Text="{Binding XL,Mode=TwoWay}" TextAlignment="Right" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Height="23" Visibility="Visible" />
    <TextBlock Width="49" Text="{Binding XXL,Mode=TwoWay}" TextAlignment="Right" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Height="23" Visibility="Visible" />
    <TextBlock Width="49" Text="{Binding XL3,Mode=TwoWay}" TextAlignment="Right" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Height="23" Visibility="Visible" />
    <TextBlock Width="49" Text="{Binding XL,Mode=TwoWay}" TextAlignment="Right" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Height="23" Visibility="Visible" />
    <TextBlock Width="49" Text="{Binding Liu,Mode=TwoWay}" TextAlignment="Right" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Height="23" Visibility="Visible" />
    <TextBlock Width="49" Text="{Binding Yang,Mode=TwoWay}" TextAlignment="Right" />
    <Rectangle Fill="#FF0B1D1D" VerticalAlignment="Stretch" Width="1" Height="23" Visibility="Visible" />
    </StackPanel>
    </DataTemplate>
    </telerik:GridViewDataColumn.CellTemplate>
    </telerik:GridViewDataColumn>

    </telerik:RadGridView.Columns>
    </telerik:RadGridView>

    </Grid>

    </Grid>
    </UserControl>

    PS:为了兼容分辨率,这里采用了DataGrid的百分比布局。

           如果重复的引用Telerik的命名空间则会引发错误。

          错误内容:
          错误 1 分析规则 Element ::= . EmptyElement | ( StartElement ElementBody ). 中的意外 PROPERTYELEMENT。 E:\Test\SLReportTest\SLReportTest\MainPage.xaml SLReportTest

          这里是“元素冲突导致的”,要把控件元素里的命名空间删除掉,因为空间内部属性设置冲突

    2、后台代码实现打印和导出

          

    private void bt_Confirm_Click(object sender, RoutedEventArgs e)
    {

    }

    /// <summary>
    /// 打印
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void bt_Print_Click(object sender, RoutedEventArgs e)
    {
    PrintDocument prtDoc = new PrintDocument();
    prtDoc.PrintPage += new EventHandler<PrintPageEventArgs>(prtDoc_PrintPage);
    string title = txtBTitle.Text;
    prtDoc.Print(title); // " Printing Test " 是文档名 在打印机的任务列表里可以看到
    }

    void prtDoc_PrintPage(object sender, PrintPageEventArgs e)
    {
    e.PageVisual = gdCircuitReport; //打印所有内容
    }

    private void bt_Excel_Click(object sender, RoutedEventArgs e)
    {
    string extensioin = "xls";
    ExportFormat format = ExportFormat.Html;
    SaveFileDialog dialog = new SaveFileDialog();
    dialog.DefaultExt = extensioin;
    dialog.Filter = String.Format("{1} files (*.{0})|*.{0}|All files (*.*)|*.*", extensioin, "Excel");
    dialog.DefaultFileName = txtBTitle.Text;
    dialog.FilterIndex = 1;

    if (dialog.ShowDialog() == true)
    {
    try
    {
    using (Stream str = dialog.OpenFile())
    {
    GridViewExportOptions exportextension = new GridViewExportOptions();
    exportextension.Format = format;
    exportextension.Encoding = System.Text.Encoding.GetEncoding("utf-8");//放置乱码的出现
    exportextension.ShowColumnFooters = true;
    exportextension.ShowColumnHeaders = true;
    exportextension.ShowGroupFooters = true;

    this.rgv_list.Export(str, exportextension);

    }
    }
    catch (Exception)
    {
    }
    }

    //rgv_list.ToCsv();//Csv文件
    //string extension = "csv";
    //SaveFileDialog dialog = new SaveFileDialog()
    //{
    // DefaultExt = extension,
    // Filter = String.Format("{1} files (*.{0})|*.{0}|All files (*.*)|*.*", extension, "CSV"),
    // FilterIndex = 1
    //};
    //if (dialog.ShowDialog() == true)
    //{
    // using (Stream stream = dialog.OpenFile())
    // {
    // rgv_list.Export(stream,
    // new GridViewExportOptions()
    // {
    // Format = ExportFormat.Csv,
    // ShowColumnHeaders = true,
    // ShowColumnFooters = true,
    // ShowGroupFooters = false,
    // });
    // }
    //}

    }

          前台代码定义了报表的绑定格式,这里的后台代码实现了报表的打印和导出。

  • 相关阅读:
    Google Analytics的Gif请求数据解读
    还原当年创业:屌丝逆袭后的华丽转身 (zz)
    减去脂肪,轻身上阵 (zz)
    离婚,感谢 (转载)
    delphi如何调用.NET webservice
    如何修改远程登陆3389端口
    软件中的2038问题讨论
    去掉cxgrid上面的分组的灰色栏
    从MDF文件恢复Sql Server2000数据库
    CxGrid的一些使用方法
  • 原文地址:https://www.cnblogs.com/ssol/p/3028024.html
Copyright © 2011-2022 走看看