【问题标题】:How to set datasource for fields in XtraReports without having a dataset at design time?如何在设计时没有数据集的情况下为 XtraReports 中的字段设置数据源?
【发布时间】:2009-08-07 03:58:47
【问题描述】:

我现在正在查看 XtraReports 报告工具,但有些东西我还不明白。

如何设置某个字段的数据源(我猜在报告中显示为标签),而无需在设计时构建连接、适配器和数据集,而是以编程方式进行。

例如,我可以有一个名为“用户”的表,其中包含 3 个字段:用户 ID、用户名和密码。 在报表设计器中,我放置了 3 个标签(这是我的问题)设置数据源以显示 3 个数据库字段。 然后,在后面的代码中,我创建一个连接,执行一个命令,填充一个数据集,创建一个报表实例,将数据表传递给它并显示报表预览。

这可能吗?如果还不够清楚,请告诉我。

谢谢!

【问题讨论】:

    标签: c# devexpress xtrareport


    【解决方案1】:

    您可以将报表的 DataSourceSchema 属性设置为代表您的数据源的 XML 架构。这将允许您在设计时使用报表设计器设置数据绑定,而无需每次都建立与数据库的连接。

    我是这样做的: 一旦我的报告查询大部分完成后,我就会运行一次代码并调用

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

    然后在报表设计器中,我将报表的 DataSourceSchema 属性设置为新创建的文件。这将填充报表设计器的字段列表选项卡,以便您可以在设计时进行绑定。这样,您只需拥有一次有效的数据源(或任何时候更改列)。你肯定仍然可以使用 Przemaas 的方法并在代码中完成所有数据绑定,但我更喜欢让设计人员处理大部分工作。

    【讨论】:

    • 我一直在寻找这样的东西,谢谢凯尔!我想我可以构建一个非常小的应用程序,它可以获取 sql 并编写 xml,以便更快地完成此操作。
    【解决方案2】:

    在没有数据集的情况下构建报表,您将使用 IList 对象...所以请遵循这个不错的教程

    如何:将 Web 报表绑定到数组列表 https://documentation.devexpress.com/#XtraReports/CustomDocument3851

    【讨论】:

    • 谢谢 jalchr,这就是我要找的。几个月前我已经解决了,但是谢谢!
    【解决方案3】:

    是的,这是可能的。您可以在代码中定义必要的数据绑定:

    this.xrLabel1.DataBindings.Add(new DevExpress.XtraReports.UI.XRBinding("Text", data, "Name", "aaa"));
    
    • 此处的文本是 XrLabel 上的属性 班级。我假设你想 将绑定字段显示为标签中的文本。
    • 数据是你的数据对象
    • “名称”是您要显示的字段的名称
    • "aaa" 是显示格式,适用于您想以自定义格式显示值的情况

    XtraReport 中的数据绑定基本上与标准窗口表单数据绑定的行为方式相同。

    如果您需要更多指南,请告诉我

    【讨论】:

    • +1 Przemaas 向我展示了以编程方式执行此操作的方式,尽管我觉得这有点矛盾,你不觉得吗?您应该能够直接编辑标签控件的数据源。谢谢!
    【解决方案4】:

    这是一个替代品..

    rtpObject.DataSourceSchema = dataSet.GetXmlSchema();
    

    【讨论】:

      【解决方案5】:

      在将修饰符属性设置为公共之前

      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
      

      【讨论】:

        【解决方案6】:
        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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-01-02
          • 2023-03-25
          • 1970-01-01
          • 2021-10-26
          • 1970-01-01
          • 2023-04-09
          • 1970-01-01
          相关资源
          最近更新 更多