作成日: 2022/07/29 最終更新日: 2022/07/29
文書種別
使用方法
詳細
DataTableをレポートのデータソースとする場合、C1FlexReport.DataSource.RecordsetプロパティにDataTableを割り当て(*1)、レポートのフィールドのTextプロパティに「=列名」の形でDataTableの列名を設定(*2)します。
*1:レポート側にデータソースが定義されていない場合には、新規にDataSourceを追加した上でDataTableを割り当てる必要があります。
*2:レポートのフィールドのText.Expressionプロパティに列名を直接設定してもOKです。
以下に、レポートの"Field1"と"Field2"に、DataTableの"ColumnA"と"ColumnB"のデータを表示するサンプルコードを紹介します。
事前にレポートデザイナで、Detailセクションに"Field1"と"Field2"という2つのTextFieldを追加したレポート(Test01.flxr)を作成し、プロジェクトに追加してください。

◎サンプルコード(VB)
*1:レポート側にデータソースが定義されていない場合には、新規にDataSourceを追加した上でDataTableを割り当てる必要があります。
*2:レポートのフィールドのText.Expressionプロパティに列名を直接設定してもOKです。
以下に、レポートの"Field1"と"Field2"に、DataTableの"ColumnA"と"ColumnB"のデータを表示するサンプルコードを紹介します。
事前にレポートデザイナで、Detailセクションに"Field1"と"Field2"という2つのTextFieldを追加したレポート(Test01.flxr)を作成し、プロジェクトに追加してください。

◎サンプルコード(VB)
Imports C1.Win.FlexReport
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' レポートの読み込み
C1FlexReport1.Load("..\..\Test01.flxr", "レポート 1")
' データテーブルの作成
Dim dt As DataTable = GetMyDataTable()
' データソースの設定(1)
C1FlexReport1.DataSource.Recordset = dt
'' データソースの設定(2)
'Dim ds = New DataSource()
'ds.Name = "MyDataName"
'ds.Recordset = dt
'C1FlexReport1.DataSources.Add(ds)
'C1FlexReport1.DataSourceName = ds.Name
' TextFieldの設定
Dim tField1 As TextField = CType(C1FlexReport1.Sections.Detail.Fields("Field1"), TextField)
tField1.Text = "=ColumnA" '"ColumnA"列をバインド
'tField1.Text.Expression = "ColumnA
Dim tField2 As TextField = CType(C1FlexReport1.Sections.Detail.Fields("Field2"), TextField)
tField2.Text = "=ColumnB" '"ColumnB"列をバインド
'tField2.Text.Expression = "ColumnB"
' プレビュー表示
C1FlexReport1.Render()
C1FlexViewer1.DocumentSource = C1FlexReport1
End Sub
Private Function GetMyDataTable() As DataTable
Dim dt As DataTable = New DataTable()
dt.Columns.Add("ColumnA", GetType(String))
dt.Columns.Add("ColumnB", GetType(String))
For i As Integer = 0 To 10 - 1
dt.Rows.Add((i + 1).ToString("0000"), (ChrW((65 + i))).ToString())
Next
dt.AcceptChanges()
Return dt
End Function
End Class
◎サンプルコード(C#)
using C1.Win.FlexReport;
namespace prj_FlexReport
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// レポートの読み込み
c1FlexReport1.Load(@"..\..\Test01.flxr", "レポート 1");
// データテーブルの作成
DataTable dt = GetMyDataTable();
// データソースの設定(1)
c1FlexReport1.DataSource.Recordset = dt;
//// データソースの設定(2)
//var ds = new DataSource();
//ds.Name = "MyDataName";
//ds.Recordset = dt;
//c1FlexReport1.DataSources.Add(ds);
//c1FlexReport1.DataSourceName = ds.Name;
// TextFieldの設定
TextField tField1 = (TextField)c1FlexReport1.Sections.Detail.Fields["Field1"];
tField1.Text = "=ColumnA"; //"ColumnA"列をバインド
//tField1.Text.Expression = "ColumnA";
TextField tField2 = (TextField)c1FlexReport1.Sections.Detail.Fields["Field2"];
tField2.Text = "=ColumnB"; //"ColumnB"列をバインド
//tField2.Text.Expression = "ColumnB";
// プレビュー表示
c1FlexReport1.Render();
c1FlexViewer1.DocumentSource = c1FlexReport1;
}
DataTable GetMyDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("ColumnA", typeof(String));
dt.Columns.Add("ColumnB", typeof(String));
for (int i = 0; i < 10; i++)
{
dt.Rows.Add((i+1).ToString("0000"), ((char)(65 + i)).ToString());
}
dt.AcceptChanges();
return dt;
}
}
}