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

Теперь я смотрю на инструмент отчетов XtraReports и там что-то еще не получил.

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

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

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

Спасибо!

Ответ 1

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

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

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

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

Ответ 2

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

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

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

Сообщите мне, нужны ли вам дополнительные рекомендации.

Ответ 3

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

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

Ответ 4

Вот альтернатива..

rtpObject.DataSourceSchema = dataSet.GetXmlSchema();

Ответ 5

перед тем, как сделать это свойство свойства модификатора общедоступным

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

Ответ 6

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