Как установить источник данных для полей в XtraReports без наличия набора данных во время разработки?

Я сейчас смотрю на XtraReports reporting tool, и есть что-то, что я еще не понял.

Как установить источник данных для определенного поля (показанного в отчете как метка, я думаю), без необходимости создавать соединение, адаптер и набор данных во время разработки, но делать это программно.

например, у меня может быть таблица под названием "пользователь" с 3 полями: UserId, Username и Password. В дизайнере отчетов я размещаю 3 метки (и вот мой вопрос) задайте источник данных для отображения 3 полей базы данных. Затем в коде позади я создаю соединение, выполняю команду, заполняю набор данных, создаю экземпляр отчета, передаю ему datatable и показываю предварительный просмотр отчета.

это возможно? Дай мне знать, если будет недостаточно ясно.

спасибо!

6 ответов


можно задать свойству DataSourceSchema отчета XML-схему, представляющую источник данных. Это позволит вам использовать конструктор отчетов для установки Привязок данных во время разработки без установления соединения с базой данных каждый раз.

вот как я это делаю: Как только мой запрос отчета в основном завершен, я запускаю код один раз с вызовом

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

затем в конструкторе отчетов я устанавливаю свойство DataSourceSchema отчета для вновь созданного файл. Это заполнит вкладку списка полей конструктора отчетов, чтобы можно было выполнить привязку во время разработки. Таким образом, у вас должен быть действительный источник данных только один раз (или в любое время, когда вы меняете свои столбцы). Вы определенно можете использовать подход Przemaas и выполнять все привязки данных в коде, но я предпочитаю, чтобы дизайнер выполнял большую часть работы.


Да, это возможно. Необходимые привязки данных можно определить в коде:

this.xrLabel1.DataBindings.Add(new DevExpress.XtraReports.UI.XRBinding("Text", data, "Name", "aaa"));
  • текст здесь свойство на XrLabel класс. Я предполагаю, что вы хотите отобразить связанное поле в виде текста в метке.
  • data - ваш объект с данными
  • "имя" - это имя поля, которое вы хотите отобразить
  • " aaa " - это формат отображения, применимый в случае, если вы хотите отображать значения с пользовательским форматированием

в основном привязки данных в XtraReport действует почти так же, как стандартные привязки данных windows forms.

Дайте мне знать, вам нужно больше рекомендаций


построение отчета без набора данных, вы бы использовали объект IList ... так что следуйте этому хорошему учебнику

как: привязать веб-отчет к списку массивов https://documentation.devexpress.com/#XtraReports/CustomDocument3851


вот альтернативный вариант..

rtpObject.DataSourceSchema = dataSet.GetXmlSchema();

перед выполнением этого свойства модификатора set как public

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);