10
votes

Comment définir DataSource pour les champs de Xtrareports sans avoir un jeu de données au moment de la conception?

Je jette un coup d'oeil maintenant à l'outil de rapport de Xtrareports et je ne le comprends pas encore.

Comment définir la source de données d'un certain champ (affichée dans le rapport sous forme d'une étiquette que je suppose), sans avoir à créer une connexion, un adaptateur et une carte de données au moment de la conception, mais le faisant de manière programmative.

Par exemple, je peux avoir une table appelée "utilisateur" avec 3 champs: UserID, Nom d'utilisateur et mot de passe. Dans le concepteur de rapports, je place 3 étiquettes (et voici ma question) définit la DataSource pour afficher les 3 champs de base de données. Ensuite, dans le code derrière, je crée une connexion, exécutez une commande, remplissez un jeu de données, créez une instance de rapport, transmettez-la sur l'ensemble et affiche l'aperçu du rapport.

est-ce possible? Faites-moi savoir si ce n'est pas assez clair.

merci!


0 commentaires

6 Réponses :


4
votes

Oui, c'est possible. Vous pouvez définir les annonces de données 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 le Xrlabel classer. Je suppose que tu veux Afficher le champ Lié comme texte dans l'étiquette. LI>
  • Les données sont votre objet avec les données li>
  • "Nom" est le nom de champ que vous souhaitez afficher LI>
  • "AAA" est format d'affichage, applicable au cas où vous souhaitez afficher des valeurs avec un formatage personnalisé LI> ul>

    Fondamentalement Dataildingings dans XTraReport Agissez à peu près de la même manière que les fichiers Windows standard formes de données. P>

    Faites-moi savoir si vous avez besoin de plus de directives P> P>


1 commentaires

+1 Przemaas pour me montrer la façon de le faire par programme, bien que j'ai le sentiment que c'est un peu conversant, ne pensez-vous pas? Vous devriez être capable de modifier directement la source de données d'un contrôle d'étiquettes. Merci!



12
votes

Vous pouvez définir la propriété DataSourceschema de votre rapport sur un schéma XML qui représente votre DataSource. Cela vous permettra d'utiliser le concepteur de rapport pour définir 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 la requête de mon rapport surtout finalisé, j'exécute le code une fois avec un appel à xxx

puis dans le concepteur de rapports, j'ai défini la propriété Datasourceschema du rapport dans le fichier nouvellement créé. Cela remplira l'onglet de la liste de champs du concepteur de rapport afin que vous puissiez lier au moment de la conception. De cette façon, vous devez avoir une source de données valide une fois (ou une fois de temps que vous modifiez vos colonnes). Vous pouvez toujours toujours faire 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.


1 commentaires

Quelque chose comme c'est ce que je cherchais, merci Kyle! Je pense que je peux construire une très petite application qui obtient un SQL et écrit un XML afin de le faire un peu plus rapidement.



5
votes

Construire un rapport sans jeu de données, vous utiliseriez un objet ilist ... alors suivez ce beau tutoriel

Comment: lier un rapport Web à une liste de matrices https://documentation.devexpress.com/#xtrareports/customdocument3851


1 commentaires

Merci Jalchr, c'est ce que je cherchais. J'ai déjà résolu les mois il y a des mois, mais merci!



2
votes

Voici un alternatif ..

rtpObject.DataSourceSchema = dataSet.GetXmlSchema();


0 commentaires

1
votes

Avant de faire cette option de modificateur définie comme 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


0 commentaires

1
votes
XRBinding binding = new XRBinding("Text", dbaDataSet, "transactions.fk_transitems_transactionid.name2");
this.xrTableCell1.DataBindings.Add(binding);

0 commentaires