Come impostare l'origine dati per i campi in XtraReports senza avere un set di dati in fase di progettazione?

StackOverflow https://stackoverflow.com/questions/1242825

  •  12-09-2019
  •  | 
  •  

Domanda

Sto dando un'occhiata allo strumento di reporting XtraReports e c'è qualcosa che ancora non capisco.

Come posso impostare l'origine dati per un determinato campo (mostrato nel report come etichetta, immagino), senza dover creare una connessione, un adattatore e un set di dati in fase di progettazione ma farlo in modo programmatico.

Ad esempio, posso avere una tabella chiamata "Utente" con 3 campi:ID utente, nome utente e password.Nel progettista del report inserisco 3 etichette (ed ecco la mia domanda) imposta l'origine dati per mostrare i 3 campi del database.Quindi, nel code-behind, creo una connessione, eseguo un comando, riempio un set di dati, creo un'istanza del report, gli passo il datatable e mostro l'anteprima del report.

È possibile?Fammi sapere se non è abbastanza chiaro.

Grazie!

È stato utile?

Soluzione

Si potrebbe impostare la proprietà DataSourceSchema del vostro rapporto per uno schema XML che rappresenta il tuo DataSource. Che vi permetterà di utilizzare il Report Designer per impostare le associazioni di dati in fase di progettazione senza stabilire una connessione al database ogni volta.

Ecco come lo faccio: Una volta che ho la mia domanda rapporto per lo più finalizzato, ho eseguire il codice una volta con una chiamata a

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

Poi nel report designer che impostare la proprietà DataSourceSchema del Rapporto per il file appena creato. Questo popolerà scheda Elenco campi Report Designer in modo da poter legare in fase di progettazione. In questo modo si avrà solo a disporre di una fonte di dati validi una volta (o ogni volta che si modificano le colonne). Si può sicuramente fare ancora l'approccio di Przemaas e fare tutte le associazioni di dati in codice, ma preferisco lasciare gestire il progettista maggior parte del lavoro.

Altri suggerimenti

Costruire una relazione senza un insieme di dati, si dovrebbe utilizzare un oggetto IList ... quindi seguire questa bel tutorial

Procedura: associare un report Web a una matrice List https://documentation.devexpress.com/#XtraReports/CustomDocument3851

Sì, è possibile.È possibile definire le associazioni dati necessarie nel codice:

this.xrLabel1.DataBindings.Add(new DevExpress.XtraReports.UI.XRBinding("Text", data, "Name", "aaa"));
  • Il testo qui è proprietà sulla classe XRLabel.Presumo che tu voglia visualizzare il campo limitato come testo in etichetta.
  • data è il tuo oggetto con i dati
  • "Nome" è il nome del campo che desideri visualizzare
  • "aaa" è il formato di visualizzazione, applicabile nel caso in cui si desideri visualizzare i valori con una formattazione personalizzata

Fondamentalmente le associazioni dati in XtraReport agiscono più o meno allo stesso modo delle associazioni dati dei moduli Windows standard.

Fammi sapere se hai bisogno di più linee guida

Ecco un alternativo ..

rtpObject.DataSourceSchema = dataSet.GetXmlSchema();

prima di fare questo insieme di proprietà modificatore di come pubblico

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

// o //

XRBinding binding = new XRBinding("Text", dbaDataSet, "transactions.fk_transitems_transactionid.name2");
this.xrTableCell1.DataBindings.Add(binding);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top