設計時にデータセットを持たずに XtraReports のフィールドのデータソースを設定するにはどうすればよいですか?
-
12-09-2019 - |
質問
現在、XtraReports レポート ツールを調べていますが、まだ理解できない点があります。
設計時に接続、アダプター、データセットを構築せずに、プログラム的に行うことで、特定のフィールド (おそらくラベルとしてレポートに表示される) のデータ ソースを設定するにはどうすればよいですか。
たとえば、3 つのフィールドを持つ「User」というテーブルを作成できます。ユーザー ID、ユーザー名、パスワード。レポート デザイナーで 3 つのラベルを配置し (これが私の質問です)、3 つのデータベース フィールドを表示するデータソースを設定します。次に、背後のコードで接続を作成し、コマンドを実行し、データセットを入力し、レポート インスタンスを作成し、それにデータテーブルを渡し、レポート プレビューを表示します。
これは可能でしょうか?十分に明確でない場合はお知らせください。
ありがとう!
解決
あなたのDataSourceを表すXMLスキーマにレポートのDataSourceSchemaプロパティを設定することができます。それはあなたがデータベースにするたびに、接続を確立することなく、設計時に、あなたのデータバインディングを設定するには、レポートデザイナを使用できるようになります。
ここで私はそれを行う方法は次のとおりです。 私は私のレポートクエリのほとんどが完成したら、私はへの呼び出しで一度コードを実行します。
myDataSet.WriteXml("C:\myDataSourceSchema.xml", System.Data.XmlWriteMode.WriteSchema)
は、その後、レポートデザイナに私が新しく作成されたファイルへのレポートのDataSourceSchemaプロパティを設定します。あなたがデザイン時にバインドすることができますので、これは、レポートデザイナのフィールドリスト]タブに移入されます。そうすれば、あなたは一度だけ有効なデータソース(またはあなたが列を変更任意の時間)を持っている必要があります。あなたは間違いなく、まだPrzemaasのアプローチを行うと、コードでデータバインディングのすべてを行うが、私は、設計者が作業のほとんどを処理させることを好むことができます。
他のヒント
データセットを使用せずにレポートを構築するには、IList オブジェクトを使用します。この素晴らしいチュートリアルに従ってください
方法:Web レポートを配列リストにバインドする https://documentation.devexpress.com/#XtraReports/CustomDocument3851
はい、可能です。コード内で必要なデータバインディングを定義できます。
this.xrLabel1.DataBindings.Add(new DevExpress.XtraReports.UI.XRBinding("Text", data, "Name", "aaa"));
- ここのテキストはXrLabelのプロパティです。 クラスである。あなたが望んでいるのは バインドされたフィールドをラベルのテキストとして表示する。
- data はデータを持つオブジェクトです
- 「名前」は表示したいフィールドの名前です
- 「aaa」は表示形式で、値をカスタム形式で表示する場合に適用されます。
基本的に、XtraReport のデータバインディングは、標準の Windows フォーム データバインディングとほぼ同じように動作します。
さらにガイドラインが必要かどうかをお知らせください
ここでは、代替である..
rtpObject.DataSourceSchema = dataSet.GetXmlSchema();
パブリックとしてこのセット修飾子プロパティを行う前に、
InvoicePrinting_Rpt InvoicePrintingRpt = new InvoicePrinting_Rpt();//report object
InvoicePrintingRpt.BillDetails.Report.DataSource = ds_Invoice;
InvoicePrintingRpt.Report.DataMember = ds_Invoice.Tables[0].TableName;
//bellow third parameter as your column name.
InvoicePrintingRpt.lbl_BillHead.DataBindings.Add("Text", null, "BILL_DESCRIPTION");
InvoicePrintingRpt.lbl_Det_Date.DataBindings.Add("Text", null, "TRANSACTION_DATE");
InvoicePrintingRpt.lbl_ISINCode.DataBindings.Add("Text", null, "ISIN_CODE");
ReportViewer1.Report = InvoicePrintingRpt;//assign report obj
ReportViewer1.Report.Name = "DevExpress_Reports.InvoicePrinting_Rpt";
ReportViewer1.DataBind(); //binding
XRBinding binding = new XRBinding("Text", ageingBindingSource, "ageing_contactsLookup.name");
this.xrLabel19.DataBindings.Add(binding);
//または//
XRBinding binding = new XRBinding("Text", dbaDataSet, "transactions.fk_transitems_transactionid.name2");
this.xrTableCell1.DataBindings.Add(binding);