天天看點

水晶報表在vs2010 WPF環境下的嘗試

由于VS2010沒有內建水晶報表元件,嘗試前必須先安裝 水晶報表 for VS2010,若機器未安裝的可點選這裡>>>下載下傳安裝

建立一個WPF應用程式項目,此時我們先修改一個項目屬性,右擊項目名->屬性,“目标架構”務必改成".Net Framework4"(預設是".Net Framework 4 Client Profile"),否則會報錯。

打開窗體設計器後,工具欄并未出現CrystalReportViewer控件,是以我們必須先手動添加這些控件,可在工具欄建立一頁籤,然後右擊,“選擇項”,如圖示

水晶報表在vs2010 WPF環境下的嘗試

篩選出SAPBusinessObjects的元件勾選後添加到工具箱,此時我們建立的頁籤便出現了CrystalReportViewer控件,我在MainWindow窗體放置了一個按鈕btnReport和crystalReportViewer控件

接下來我們為水晶報表準備資料源,在項目添加一個資料集DataSet1.xsd,添加一個資料表DataTable1,我在DataTable1添加兩列(String型與Int32型),資料源準備好了,在項目添加水晶報表RPT檔案,将DataSet1設為其資料源,如圖示

水晶報表在vs2010 WPF環境下的嘗試

水晶報表for VS2010比之前vs内置的水晶報表多了一些特性,比如在設計模闆,對象就多了一個格式刷功能,如圖示

水晶報表在vs2010 WPF環境下的嘗試

它可以将指定對象的格式應用到其他對象,隻需在指定對象先擷取其格式刷,然後将滑鼠移到其他對象上時,滑鼠形狀會自動變成一個刷子形狀,單擊一下,該對象便與指定對象的格式完全一緻,非常便利。這隻是其中之一,還有其他一些特性待我們好好研究

模闆設計好了,接下來進入代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace WpfApplication1
{
    /// <summary>
    /// MainWindow.xaml 的互動邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        /// <summary>
        /// 水晶報表“骨架”
        /// </summary>
        DataSet1 myDataSet = new DataSet1( );

        public MainWindow( )
        {
            InitializeComponent( );
        }

        protected override void OnInitialized( EventArgs e )
        {
            base.OnInitialized( e );

            //往資料集塞資料
            myDataSet.DataTable1.AddDataTable1Row( "Luols" , 1 );
            myDataSet.DataTable1.AddDataTable1Row( "Luols" , 2 );
            myDataSet.DataTable1.AddDataTable1Row( "Luols" , 3 );
        }

        /// <summary>
        /// 報表預覽
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnReport_Click( object sender , RoutedEventArgs e )
        {
            CrystalReport1 myReport = new CrystalReport1( );
            myReport.SetDataSource( myDataSet );

            //這裡與之前版本有差別
            //之前是 crystalReportsViewer1.ReportSource = myReport
            crystalReportsViewer1.ViewerCore.ReportSource = myReport;
        }
    }
}
           

點選運作,呀!報錯了,如圖示

水晶報表在vs2010 WPF環境下的嘗試

解決方案可參考我之前寫的這篇:http://blog.csdn.net/luols/article/details/6047962

處理後再點選運作,好了,運作效果如下

水晶報表在vs2010 WPF環境下的嘗試

繼續閱讀