Как установить источник данных для полей в XtraReports без набора данных во время разработки? - PullRequest
10 голосов
/ 07 августа 2009

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

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

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

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

Спасибо!

Ответы [ 6 ]

12 голосов
/ 07 августа 2009

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

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

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

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

5 голосов
/ 01 апреля 2010

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

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

4 голосов
/ 07 августа 2009

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

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

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

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

2 голосов
/ 06 июля 2013

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

rtpObject.DataSourceSchema = dataSet.GetXmlSchema();
1 голос
/ 23 ноября 2013
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);
1 голос
/ 20 ноября 2013

перед выполнением этого свойства модификатора набора как 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
...