¿Cómo configurar la fuente de datos para los campos en XtraReports sin tener un conjunto de datos en tiempo de diseño?

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

  •  12-09-2019
  •  | 
  •  

Pregunta

Estoy echando un vistazo a la herramienta de informes XtraReports y hay algo que aún no entiendo.

¿Cómo configuro la fuente de datos para un determinado campo (que se muestra en el informe como una etiqueta, supongo), sin tener que crear una conexión, un adaptador y un conjunto de datos en el momento del diseño, sino haciéndolo mediante programación?

Por ejemplo, puedo tener una tabla llamada "Usuario" con 3 campos:ID de usuario, nombre de usuario y contraseña.En el diseñador de informes coloco 3 etiquetas (y aquí está mi pregunta) configuro la fuente de datos para mostrar los 3 campos de la base de datos.Luego, en el código subyacente, creo una conexión, ejecuto un comando, completo un conjunto de datos, creo una instancia de informe, le paso la tabla de datos y muestro la vista previa del informe.

es posible?Déjame saber si no está lo suficientemente claro.

¡Gracias!

¿Fue útil?

Solución

También podemos establecer la propiedad DataSourceSchema de su informe a un esquema XML que representa el origen de datos. Eso le permitirá utilizar el Diseñador de informes para establecer sus enlaces de datos en tiempo de diseño sin establecer una conexión con la base de datos cada vez.

Así es como lo hago: Una vez que tengo mi informe de consulta sobre todo finalizó, me ejecutar el código una vez con una llamada a

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

A continuación, en el diseñador de informes que DataSourceSchema conjunto de propiedades del informe para el archivo recién creado. Esto llenará pestaña Lista de campos del Informe del diseñador para que pueda enlazar en tiempo de diseño. De esa manera usted sólo tiene que tener un origen de datos válido una vez (o en cualquier momento que cambie sus columnas). Definitivamente se puede todavía hacer el enfoque de Przemaas y hacer todos sus enlaces de datos en el código, pero yo prefiero dejar que el diseñador de manejar la mayor parte del trabajo.

Otros consejos

Al crear un informe sin un conjunto de datos, usaría un objeto IList...así que sigue este bonito tutorial

Cómo:Vincular un informe web a una lista de matrices https://documentation.devexpress.com/#XtraReports/CustomDocument3851

Sí, es posible. Se puede definir DataBindings necesarios en el código:

this.xrLabel1.DataBindings.Add(new DevExpress.XtraReports.UI.XRBinding("Text", data, "Name", "aaa"));
  • texto aquí es propiedad de la XrLabel clase. Asumo que desea mostrar campo enlazado como texto en la etiqueta.
  • los datos es su objeto con datos
  • "Nombre" es el nombre del campo que desea mostrar
  • "AAA" es el formato de visualización, aplicable en caso de que desee mostrar los valores con formato personalizado

Básicamente DataBindings en XtraReport actúan más o menos la misma forma que las ventanas de formularios estándar DataBindings.

Deja que sé es que necesita más pautas

Este es un suplente ..

rtpObject.DataSourceSchema = dataSet.GetXmlSchema();

antes de hacer esta propiedad modificador del juego como público

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top