2009-08-07 80 views
10

我現在來看一下XtraReports報告工具,還有一些我還沒有得到它。如何在設計時在沒有數據集的情況下爲XtraReports中的字段設置數據源?

如何設置特定字段的數據源(在報表中顯示爲標籤,我猜),而無需在設計時建立連接,適配器和數據集,但可以通過編程方式進行。

例如,我可以有一個名爲「User」的表格,其中包含3個字段:UserId,Username和Password。 在報表設計器中,我放置了3個標籤(這裏是我的問題)設置顯示3個數據庫字段的數據源。 然後,在後面的代碼中,我創建一個連接,執行一個命令,填充一個數據集,創建一個報告實例,將數據表傳遞給它並顯示報告預覽。

這可能嗎?如果不夠清楚,請告訴我。

謝謝!

回答

12

則可以將報告的DataSourceSchema屬性設置爲代表您的數據源的XML模式。這樣可以讓您使用報表設計器在設計時設置數據綁定,而無需每次建立與數據庫的連接。

這裏是我如何做到這一點: 一旦我有我的報表查詢大多敲定,我與呼叫一次運行代碼以

myDataSet.WriteXml("C:\myDataSourceSchema.xml", System.Data.XmlWriteMode.WriteSchema) 

然後在報表設計我的報告的DataSourceSchema屬性設置爲新創建的文件。這將填充報表設計器的字段列表選項卡,以便您可以在設計時進行綁定。這樣你只需要有一次有效的數據源(或者任何時候改變你的列)。你當然可以做Przemaas的方法,並在代碼中完成所有的數據綁定,但我更願意讓設計人員處理大部分工作。

+0

這樣的事情就是我一直在尋找的,謝謝凱爾!我想我可以構建一個非常小的應用程序,它可以獲取一個sql並寫入一個xml以便更快地完成此操作。 – Sebastian 2009-08-07 19:08:51

5

是的,這是可能的。您可以在代碼中定義必要的數據綁定:這裏

this.xrLabel1.DataBindings.Add(new DevExpress.XtraReports.UI.XRBinding("Text", data, "Name", "aaa")); 
  • 文本是在XrLabel 類屬性。我假設你想 顯示綁定字段作爲標籤中的文本。
  • 數據與數據的對象
  • 「名稱」是要顯示字段的名稱
  • 「AAA」的顯示格式,適用的情況下,要顯示自定義格式值

基本上,XtraReport中的數據綁定與標準Windows窗體數據綁定的行爲幾乎相同。

讓我知道你需要更多的指導方針

+0

+1 Przemaas用於顯示我這樣做的編程方式,但我有這種感覺,這有點兒變了,你不覺得嗎?您應該能夠直接編輯標籤控件的數據源。謝謝! – Sebastian 2009-08-07 19:10:28

2

這裏備用..

rtpObject.DataSourceSchema = dataSet.GetXmlSchema(); 
1

之前做這一套修改屬性作爲公共

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 
1
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); 
相關問題