.Net Framework系統のプロジェクトで作成したActiveReportsのセクションレポートを、.Net Core系統のプロジェクトで使用する前回作成したサンプルに、.Net Core側のWindowsフォーム画面から入力した値を、セクションレポートへ表示するように改良しました。
ソースコードは GitHub で公開しています。
レポートデザイナ編集用 .Net Framework系統のプロジェクト
ソースコード変更内容を解説。


SectionReportApplication1/DataModel1.cs
・セクションレポートのTextboxに動的な値を表示するにあたり、処理を簡素化するために DataModel1データクラスを追加。

1 2 3 4 5 6 7 8 9 |
namespace SectionReportApplication1 { public class DataModel1 { public string Text1 { get; set; } } } |
SectionReportApplication1/Form1.cs
・不要な usingを削除。
・セクションレポートのTextboxに動的な値を表示するようにしたので、Windowsフォームから DataModel1データクラスをセクションレポートへ渡すように変更。

1 2 3 4 5 6 7 8 |
var DataModel1 = new DataModel1 { Text1 = "test" }; viewer1.LoadDocument(new SectionReport1(DataModel1)); |
SectionReportApplication1/SectionReport1.cs
セクションレポートのTextBoxに表示する値を固定文字列から、コンストラクタのパラメータから受け取った DataModel1データクラスの Text1メンバ変数へ変更。

1 2 3 4 5 6 7 8 9 10 11 12 |
public SectionReport1(DataModel1 dataModel1) { // // デザイナー サポートに必要なメソッドです。このメソッドの内容を // InitializeComponent(); textBox1.Text = dataModel1.Text1; } |
SectionReportApplication1/SectionReportApplication1.csproj
・.Net Frameworkのバージョンを、v4.7.2から最新のv4.8へアップ。
・DataModel1データクラスのソースファイルは、「レポートデザイナ編集用 .Net Framework系統のプロジェクト」側で新規作成。
※DataModel1データクラスは「レポートデザイナ編集用 .Net Framework系統のプロジェクト」と「リリース用 .Net Core系統のプロジェクト」とで、同じソースファイルを使います。


1 2 3 4 5 6 7 |
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion> <Compile Include="DataModel1.cs" /> <DesignTime>True</DesignTime> |
リリース用 .Net Core系統のプロジェクト
ソースコード変更内容を解説。


/WinFormsApp1/Form2.cs Form2.Designer.cs Form2.resx
・入力画面を新規作成。
・「button1」ボタンをクリックすると、入力された値が表示されるレポートビューア画面を起動する。
・入力された値は DataModel1データクラスに保持し、DataModel1データクラスをレポートビューア画面へ渡している。


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using SectionReportApplication1; namespace WinFormsApp1 { public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var dataModel1 = new DataModel1 { Text1 = textBox1.Text }; var form1 = new Form1(dataModel1); form1.ShowDialog(); } } } |
/WinFormsApp1/Form1.cs
・レポートビューア画面では、コンストラクタのパラメータから受け取った DataModel1データクラスを、セクションレポートへ渡すように変更。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
private DataModel1 _DataModel1; public Form1(DataModel1 dataModel1) { _DataModel1 = dataModel1; InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { viewer1.LoadDocument(new SectionReport1(_DataModel1)); } |
/WinFormsApp1/Program.cs
・入力画面からレポートビューア画面を呼び出す流れに変えたので、アプリケーション起動時に表示する画面は、レポートビューア画面から入力画面へ変更。

1 2 3 |
Application.Run(new Form2()); |
/WinFormsApp1/WinFormsApp1.csproj
・「レポートデザイナ編集用 .Net Framework系統のプロジェクト」側で作成した DataModel1データクラスを、「リリース用 .Net Core系統のプロジェクト」側ではリンクとして追加し参照として組み込んでいる。

1 2 3 |
<Compile Include="..\SectionReportApplication1\DataModel1.cs" Link="DataModel1.cs" /> |
関連記事
GrapeCity ActiveReports for .NET 16.0J のセクションレポート(SectionReport) 開発手順 v1
GrapeCity ActiveReports for .NET 16.0J のセクションレポート(SectionReport) 開発手順 v2
GrapeCity ActiveReports for .NET 16.0J のセクションレポート(SectionReport) 開発手順 v3
GrapeCity ActiveReport よく使う機能
GrapeCity.ActiveReports.SectionReportの CanGrow/CanShrinkプロパティを使う場合
ActiveReports開発でデザイナが「値を Null にすることはできません。パラメーター名:instance」エラーになる場合
コメント