XtraReportのCalculatedFiled(計算フィールド)を使用してRDLCレポートの式を実装

2935 ワード

DevExpressレポートは確かに強く、柄が多く、目まぐるしくしています.
今回XtraReportを用いてレポートを開発したが,多くの問題は公式の文書では詳細に説明されていないので,ここに記録する.
1、XtraReportのFormattingRules属性は、私が望む式ではなくbool値のみを返す条件(Condition)判断です.
2、XtraReport公式ドキュメントのドラッグコントロールに基づいて作成されたCalculatedFiledこそ私が望んでいる式です.
1』ドラッグコントロールの仕方が柔軟ではなく、XtraReportオブジェクトのDataSource(データソース)で使用されるDataSetタイプは、XtraReportを構築する際にDataMemberプロパティを指定する必要があります.
this.calculatedField1 = new CalculatedField
                {
                    DataMember = "Product",
                    Expression = "Iif([Id]==1,-2,2 )",
                    Name = "calculatedField1"
                };
                this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
            this.calculatedField1});//                 ,         。
                this.DataMember = "Product";
                this.DataSource = ds;
                this.xrTableCell1.DataBindings.Add("Text", null, "Product.calculatedField1");

ただし、これらはドラッグコントロールで自動的に生成され、手動で書く必要はありません.
2』は純粋なコードで実現されており、私のデータソースはList<>タイプであるため、構築時には必ずDataMember属性を指定できないことに注意する必要がある.
this.calculatedField1 = new CalculatedField
                {
                    //DataMember = "Product",//  List     ,      DataMember  
                    Expression = "Iif([Id]==1,-2,2 )",
                    Name = "calculatedField1"
                };
                this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] {
            this.calculatedField1});
                //this.DataMember = "Product";//  List     ,      DataMember  
                this.DataSource = list;
                this.xrTableCell1.DataBindings.Add("Text", null, "calculatedField1");

3、XtraReportレポートはRDLC中行グループ(RowGroup)と列グループ(ColumnGroup)をサポートしていないようですが、私が発見しなかったのかもしれません.