FlexReport for WinForms
レポートのロード

FlexReport lets you load reports in Visual Studio or end-user Report Designers. You can load .flxr files, both at design time and run time using Load method of the C1FlexReport class.

The Load method provides various overloads for loading the reports as listed below.

Overload Description
Load(string reportName) Loads a report without loading the FLXR file again.
Load(string fileName, string reportName) Loads a report from an XML report definition file.
Load(string fileName, string reportName, out bool converted) Loads a report from an XML report definition file and specifies if report definition was imported from an old C1Report format.
Load(System.IO.Stream stream, string reportName) Loads a report from an XML report definition in stream.
Load(System.IO.Stream stream, string reportName, out bool converted) Loads a report from an XML report definition in stream and specifies if report definition was imported from an old C1Report format.
Load(System.Xml.Linq.XDocument doc, string reportName) Loads a report from an System.Xml.Linq.XDocument.
Load(System.Xml.Linq.XDocument doc, string reportName, out bool converted) Loads a report from an System.Xml.Linq.XDocument and specifies if report definition was imported from an old C1Report format.
Load(System.Xml.XmlDocument doc, string reportName) Loads a report from an System.Xml.XmlDocument.
Load(System.Xml.XmlDocument doc, string reportName, out bool converted) Loads a report from an System.Xml.XmlDocument and specifies if report definition was imported from an old C1Report format.

Lets explore how to use the Load method to load reports at design time and run time in the following sections.

設計時の FlexReport のロード

これらのファイルをデザイナーでロードするには、次の手順を実行します。

  1.  ツールボックスからフォームに [FlexReport ]コンポーネントを追加します。
  2. C1FlexReport コンポーネントを右クリックし、[レポートのロード]メニューオプションを選択して、レポート定義をロードします。コンポーネントの上にあるスマートタグ()をクリックして[C1FlexReport のタスク]メニューを開き、[レポートのロード]オプションを選択することもできます。
    レポートのロード]ダイアログボックスが表示されるので、レポート定義ファイルを選択し、さらにそのファイル内のレポートを選択します。
    レポートをロードするには、省略符ボタンをクリックし、手順 1 で作成したレポート定義ファイルを選択します。次に、ドロップダウンリストからレポートを選択し、[OK]をクリックします。[レポートのロード]ダイアログボックスに、選択したレポート名、グループ数、セクション数、およびフィールド数が表示されます。ダイアログボックスは、次のように表示されます。
        Loading report in the C1FlexReport Component.
  3. フォームに FlexViewer コントロールを追加します。また、ユーザーがレポートを選択できるようにするためのコントロール(メニュー、リストボックス、ボタングループなど)も追加します。
  4. ユーザーが選択したレポートをレンダリングするためのコードを追加します。たとえば、前の手順で btnProductsReport という名前のボタンを追加した場合は、次のようなコードを追加します。
       
    C#
    コードのコピー
    private void btnProductsReport_Click(object sender, EventArgs e)
    {
        //レポート定義をロードします
        c1FlexReport1.Load(@"..\..\ProductsReport.flxr", "Products Report");
        //レポートをプレビューします
        c1FlexViewer1.DocumentSource = c1FlexReport1;
    }
    

    実装結果は次のようになります。
           

実行時の FlexReport のロード

実行時にレポートをロードするには、レポート定義ファイルとビューアが必要です。このようなアプリケーションの主な長所は、レポート形式を変更しても、アプリケーションを更新する必要がないことです。新しいレポート定義ファイルをユーザーに送るだけで済みます。

実行時にロードされるレポートを備えたアプリケーションを作成するには、次の手順に従います。

  1. C1FlexReportDesigner アプリケーションで、必要なレポートをすべて作成します。詳細については、「FlexReportDesigner」を参照してください。
  2. 次のコントロールをアプリケーションに追加します。
    • c1FlexReport1 という名前の C1FlexReport コンポーネント
    • fv という名前の C1FlexViewer コントロール
    • cmbReport という名前の ComboBox コントロール
    • button1 という名前の Button コントロール
  3. レポート定義ファイルを読み取り、すべてのレポートのリストを構築するために、次のコードをボタンクリックイベントに追加します。
           
    // get application path       
    string appPath;
    appPath = Path.GetDirectoryName(Application.ExecutablePath).ToLower();
    int i = appPath.IndexOf("\bin");
    if ((i < 0)) { i = appPath.IndexOf("\bin"); }
    if ((i > 0)) { appPath = appPath.Remove(i, appPath.Length - i); }
    // get names of reports in the report definition file      
    m_ReportDefinitionFile = appPath + @"\Data\Products Report.flxr";
    string[] reports = C1FlexReport.GetReportList(m_ReportDefinitionFile);
    // populate combo box       
    cmbReport.Items.Clear();
    
    foreach (string report in reports)
    {
        cmbReport.Items.Add(report);
    }
    

    このコードは、最初に、レポート定義が格納されているファイルの場所を取得します。それには、システム定義の Path クラスと Application クラスの静的メソッドを使用します。レポート定義ファイルの場所と名前に合わせてコードを調整してください。

    次に、GetReportList メソッドを使用してレポート定義ファイル(手順 1 で作成)内のすべてのレポート名を含む配列を取得し、ユーザーがレポートを選択するためのコンボボックスにレポート名を挿入します。

  4. ユーザーが選択したレポートをレンダリングするには、ComboBox コントロールの SelectedIndexChanged イベントにコードを追加します。次に例を示します。
    private void cmbReport_SelectedIndexChanged(object sender, EventArgs e)
    {           
        try
        {
            Cursor = Cursors.WaitCursor;
            // load report        
            fv.StatusText = "Loading" + cmbReport.Text;
            c1FlexReport1.Load(m_ReportDefinitionFile, cmbReport.Text);
            // render into print preview control        
            fv.StatusText = "Rendering" + cmbReport.Text;
            fv.DocumentSource = c1FlexReport1;
            // give focus to print preview control 
            fv.Focus();
        }
        finally
        {
            Cursor = Cursors.Default;
        }            
    }
    
  5. プロジェクトを実行します。