前述のとおり、括弧内の式は、RenderText およびParagraphText オブジェクトの Text プロパティ内で使用できます。これらの式では、以下のオブジェクト ID を使用できます。
この変数は、生成されるドキュメントを参照します。これは、多くの方法で使用できます。たとえば、次のコードは、現在のドキュメントの作成者を出力します。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim doc As New C1PrintDocument() Dim rt As New RenderText("Landscape is " + _ "[Iif(Page.PageSettings.Landscape,\"TRUE\",\"FALSE\")].") doc.Body.Children.Add(rt) |
C#コードの書き方
C# |
コードのコピー
|
---|---|
C1PrintDocument doc = new C1PrintDocument(); RenderText rt = new RenderText("Landscape is " + "[Iif(Page.PageSettings.Landscape,\"TRUE\",\"FALSE\")]."); doc.Body.Children.Add(rt); |
この変数は、現在の表示オブジェクトを参照します。たとえば、次のコードは、現在の表示オブジェクトの名前を出力します。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim doc As New C1PrintDocument() Dim rt As New RenderText( _ "The object's name is [RenderObject.Name]") rt.Name = "MyRenderText" doc.Body.Children.Add(rt) |
C# コードの書き方
C# |
コードのコピー
|
---|---|
C1PrintDocument doc = new C1PrintDocument(); RenderText rt = new RenderText( "The object's name is [RenderObject.Name]"); rt.Name = "MyRenderText"; doc.Body.Children.Add(rt); |
この変数は、現在のページ(C1Page 型のオブジェクト)を参照します。ページオブジェクトのスクリプトメンバで最もよく使用される変数には直接アクセスできますが(後述の PageNo、PageCount などを参照してください)、現在のページ設定など、Page 変数を介してアクセスできる他のデータがあります。たとえば、次のコードは、現在のページレイアウトが横長の向きの場合「Landscape is TRUE」を出力し、それ以外の場合「Landscape is FALSE」を返します。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim doc As New C1PrintDocument() Dim rt As New RenderText("Landscape is " + _ "[Iif(Page.PageSettings.Landscape,\"TRUE\",\"FALSE\")].") doc.Body.Children.Add(rt) |
C# コードの書き方
C# |
コードのコピー
|
---|---|
C1PrintDocument doc = new C1PrintDocument(); RenderText rt = new RenderText("Landscape is " + "[Iif(Page.PageSettings.Landscape,\"TRUE\",\"FALSE\")]."); doc.Body.Children.Add(rt); |
この名前は、現在のページ番号を1ページ単位で解決します。Page.PageNo と同等です。
この名前は、ドキュメントの合計ページ数を解決します。Page.PageCount と同等です。たとえば、次のコードは、一般的な「Page X of Y」ページヘッダーの生成に使用できます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim doc As New C1PrintDocument() doc.PageLayout.PageHeader = New RenderText( _ "Page [PageNo] of [PageCount]") |
C# コードの書き方
C# |
コードのコピー
|
---|---|
C1PrintDocument doc = new C1PrintDocument(); doc.PageLayout.PageHeader = new RenderText( "Page [PageNo] of [PageCount]"); |
この名前は、現在の横方向のページ番号を1ページ単位で解決します(横方向の改ページがないドキュメントの場合、1 を返します)。
この名前は、現在の縦方向のページ番号を1ページ単位で解決します(縦方向の改ページがないドキュメントの場合、PageNo と同等です)。
この名前は、ドキュメントの合計ページ数を解決します(横方向の改ページがないドキュメントの場合、1 を返します)。
この名前は、ドキュメントの合計ページ数を解決します(横方向の改ページがないドキュメントの場合、PageCount と同等です)。ここで説明するページ番号に関連するどの変数も、必ずしもページヘッダーやページフッターに限らず、ドキュメント内の任意の場所で使用できることに注意することが重要です。
この変数は、使用可能なデータベースフィールドのコレクションを参照し、C1.C1Preview.DataBinding.FieldCollection 型を持ちます。データがバインドされたドキュメントでのみ使用できます。たとえば、次のコードは、NWIND データベースの Products テーブルに含まれる商品名のリストを出力します。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim doc As New C1PrintDocument() Dim dSrc As New DataSource() dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB dSrc.ConnectionProperties.ConnectString = _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB" Dim dSet1 As New C1.C1Preview.DataBinding.DataSet( _ dSrc, "select * from Products") doc.DataSchema.DataSources.Add(dSrc) doc.DataSchema.DataSets.Add(dSet1) Dim rt As New RenderText() rt.DataBinding.DataSource = dSet1 rt.Text = "[Fields!ProductName.Value]" doc.Body.Children.Add(rt) |
C#コードの書き方
C# |
コードのコピー
|
---|---|
C1PrintDocument doc = new C1PrintDocument(); DataSource dSrc = new DataSource(); dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB; dSrc.ConnectionProperties.ConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB"; C1.C1Preview.DataBinding.DataSet dSet1 = new C1.C1Preview.DataBinding.DataSet(dSrc, "select * from Products"); doc.DataSchema.DataSources.Add(dSrc); doc.DataSchema.DataSets.Add(dSet1); RenderText rt = new RenderText(); doc.Body.Children.Add(rt); rt.DataBinding.DataSource = dSet1; rt.Text = "[Fields!ProductName.Value]"; |
最終行でフィールド配列の要素にアクセスするための「!」の使用に注意してください。代わりに、次のように記述できます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
rt.Text = "[Fields(\"ProductName\").Value]" |
C# コードの書き方
C# |
コードのコピー
|
---|---|
rt.Text = "[Fields(\"ProductName\").Value]"; |
ただし、「!」を使用する表記の方が短くて、読みやすくなります。
この変数を使用して、ドキュメントで定義された集計のコレクションにアクセスできます。このコレクションは、C1.C1Preview.DataBinding.AggregateCollection 型を持ち、その要素は C1Preview.DataBinding.Aggregate 型を持ちます。たとえば、次のコードは、商品のリストの後に平均単価を出力します。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim doc As New C1PrintDocument() Dim dSrc As New DataSource() dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB dSrc.ConnectionProperties.ConnectString = _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB" C1.C1Preview.DataBinding.DataSet dSet1 = _ new C1.C1Preview.DataBinding.DataSet(dSrc, _ "select * from Products") doc.DataSchema.DataSources.Add(dSrc) doc.DataSchema.DataSets.Add(dSet1) Dim rt As New RenderText() doc.Body.Children.Add(rt) rt.DataBinding.DataSource = dSet1 rt.Text = "[Fields!ProductName.Value]" doc.DataSchema.Aggregates.Add(new Aggregate( _ "AveragePrice", "Fields!UnitPrice.Value", _ rt.DataBinding, RunningEnum.Document, _ AggregateFuncEnum.Average)) doc.Body.Children.Add(new RenderText( _ "Average price: [Aggregates!AveragePrice.Value]")) |
C# コードの書き方
C# |
コードのコピー
|
---|---|
C1PrintDocument doc = new C1PrintDocument(); DataSource dSrc = new DataSource(); dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB; dSrc.ConnectionProperties.ConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB"; C1.C1Preview.DataBinding.DataSet dSet1 = new C1.C1Preview.DataBinding.DataSet(dSrc, "select * from Products"); doc.DataSchema.DataSources.Add(dSrc); doc.DataSchema.DataSets.Add(dSet1); RenderText rt = new RenderText(); doc.Body.Children.Add(rt); rt.DataBinding.DataSource = dSet1; rt.Text = "[Fields!ProductName.Value]"; doc.DataSchema.Aggregates.Add(new Aggregate( "AveragePrice", "Fields!UnitPrice.Value", rt.DataBinding, RunningEnum.Document, AggregateFuncEnum.Average)); doc.Body.Children.Add(new RenderText( "Average price: [Aggregates!AveragePrice.Value]")); |
この変数を使用して、C1.C1Preview.DataBinding.C1DataBinding 型の現在の表示オブジェクトの DataBinding プロパティにアクセスできます。たとえば、次のコード(Fields 変数の使用を示すサンプルから変更されました)は、テキスト式内で表示オブジェクトの DataBinding プロパティの RowNumber メンバを使用して、商品の番号付きリストを生成します。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim doc As New C1PrintDocument() Dim dSrc As New DataSource() dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB dSrc.ConnectionProperties.ConnectString = _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB" C1.C1Preview.DataBinding.DataSet dSet1 = _ new C1.C1Preview.DataBinding.DataSet(dSrc, _ "select * from Products") doc.DataSchema.DataSources.Add(dSrc) doc.DataSchema.DataSets.Add(dSet1) Dim rt As New RenderText() rt.DataBinding.DataSource = dSet1 rt.Text = "[DataBinding.RowNumber]: [Fields!ProductName.Value]" doc.Body.Children.Add(rt) |
C#コードの書き方
C# |
コードのコピー
|
---|---|
C1PrintDocument doc = new C1PrintDocument(); DataSource dSrc = new DataSource(); dSrc.ConnectionProperties.DataProvider = DataProviderEnum.OLEDB; dSrc.ConnectionProperties.ConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND.MDB"; C1.C1Preview.DataBinding.DataSet dSet1 = new C1.C1Preview.DataBinding.DataSet(dSrc, "select * from Products"); doc.DataSchema.DataSources.Add(dSrc); doc.DataSchema.DataSets.Add(dSet1); RenderText rt = new RenderText(); rt.DataBinding.DataSource = dSet1; rt.Text = "[DataBinding.RowNumber]: [Fields!ProductName.Value]"; doc.Body.Children.Add(rt); |