Comment définir des champs dans la source de données XtraReports sans avoir un jeu de données au moment de la conception?

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

  •  12-09-2019
  •  | 
  •  

Question

Je prends un coup d'oeil maintenant à XtraReports outil de reporting et il y a quelque chose que je ne comprends pas encore.

Comment puis-je configurer la source de données pour un certain champ (montré dans le rapport comme une étiquette, je suppose), sans avoir à construire une connexion, adaptateur et ensemble de données au moment de la conception, mais le faire programatically.

Par exemple, je peux avoir une table appelée « User » avec 3 champs: UserId, Nom d'utilisateur et mot de passe. Dans le concepteur de rapport je place 3 étiquettes (et voici ma question) mis la source de données pour montrer les 3 champs de base de données. Ensuite, dans le code derrière, je crée une connexion, exécutez une commande, remplir un ensemble de données, créer une instance de rapport, passer le DataTable et afficher l'aperçu du rapport.

Est-ce possible? Permettez-moi de savoir s'il est assez clair.

Merci!

Était-ce utile?

La solution

Vous pouvez définir la propriété DataSourceSchema de votre rapport à un schéma XML qui représente votre DataSource. Cela vous permettra d'utiliser le Concepteur de rapports pour configurer vos liaisons de données au moment de la conception sans établir une connexion à la base de données à chaque fois.

Voici comment je le fais: Une fois que j'ai mon rapport demande la plupart du temps finalisé, j'exécuter le code une fois avec un appel à

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

Ensuite, dans le concepteur de rapport, je mis la propriété DataSourceSchema du rapport au fichier nouvellement créé. Cela renseignera l'onglet Liste des champs de Générateur de rapports de sorte que vous pouvez lier au moment de la conception. De cette façon, il vous suffit d'avoir une source de données valide une fois (ou chaque fois que vous changez vos colonnes). Vous pouvez certainement faire encore l'approche de Przemaas et faire toutes vos liaisons de données dans le code, mais je préfère laisser le concepteur gérer la plupart des travaux.

Autres conseils

Construire un rapport sans un ensemble de données, vous pouvez utiliser un objet IList ... alors suivez ce tutoriel bien

Comment: lier un rapport Web à un tableau Liste https://documentation.devexpress.com/#XtraReports/CustomDocument3851

Oui, il est possible. Vous pouvez définir DataBindings nécessaires dans le code:

this.xrLabel1.DataBindings.Add(new DevExpress.XtraReports.UI.XRBinding("Text", data, "Name", "aaa"));
  • Texte ici est la propriété sur la XrLabel classe. Je suppose que vous voulez affichage du champ lié sous forme de texte dans l'étiquette.
  • données est votre objet avec des données
  • « Nom » est le nom du champ que vous souhaitez afficher
  • « aaa » est le format d'affichage, applicable au cas où vous souhaitez afficher les valeurs avec mise en forme personnalisée

En gros DataBindings dans XtraReport agissent à peu près de la même manière que les fenêtres des formulaires standard DataBindings.

Faites-moi savoir est que vous avez besoin de plus directives

Voici un autre ..

rtpObject.DataSourceSchema = dataSet.GetXmlSchema();

avant de faire ce modificateur de jeu comme la propriété publique

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

// ou //

XRBinding binding = new XRBinding("Text", dbaDataSet, "transactions.fk_transitems_transactionid.name2");
this.xrTableCell1.DataBindings.Add(binding);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top