我正试图在Devexpress winform中显示报告。以下是我到目前为止所尝试的内容。
string test = @"C:\Users\bajay\Desktop\First.repx";
if (File.Exists(test))
MessageBox.Show("Test");
XtraReport report = new XtraReport();
report.LoadLayout(test);
var tool = new ReportPrintTool(report);
tool.ShowPreview();
答案 0 :(得分:1)
不,您做错了,因为您只是加载了实际上没有数据库的.REPX文件。它只有布局,您必须连接数据库,例如SQL,JSONDataSource,WCF等。通过 SQLDataSource组件,您必须在设计时连接一次,然后执行您想做的代码,在运行时之后,只需更改连接字符串,但请确保并记住在连接字符串之前添加XPO。
以更好的方式理解。 1.在设计时将其连接到数据库 2.对你的项目进行惩罚 3.只需在客户端计算机上更改连接字符串 4.然后您会完成!
答案 1 :(得分:0)
您必须使用报告的DataSource属性提供数据。 这可以是从您的数据库填充的DataTable,也可以是IEnumrable<> /对象列表。
report.DataSource = YourItemFactory.GetYourItems();
您可以参考有关此主题的DX-support pages。
答案 2 :(得分:0)
我建议您浏览XtraReport文档的Provide Data to a Report。
在那里,您将找到文档列表,设计时教程和运行时示例说明如何将报表及其元素(如计算字段和参数)连接到various kinds of data sources
。
示例:强>
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using DevExpress.XtraReports.UI;
// ...
private void Form1_Load(object sender, EventArgs e) {
XtraReport1 report = new XtraReport1();
report.DataSource = CreateData();
ReportPrintTool tool = new ReportPrintTool(report);
tool.ShowPreview();
}
private List<Data> CreateData() {
List<Data> data = new List<Data>();
Data item1 = new Data();
item1.Date = DateTime.Now;
item1.Id = 0;
item1.Name = "First";
data.Add(item1);
Data item2 = new Data();
item2.Date = DateTime.Now;
item2.Id = 1;
item2.Name = "Second";
data.Add(item2);
Data item3 = new Data();
item3.Date = DateTime.Now;
item3.Id = 2;
item3.Name = "Third";
data.Add(item3);
return data;
}
<强>参考文献:强>
How to: Bind a Report to a Data Source Schema
How to: Bind a Report to a List Object at Design Time and Provide Data at Runtime
How to: Bind a Report to an Array List
How to: Bind a Report to a Collection that Implements the ITypedList Interface
How to: Bind a Report to an XML File (Runtime Sample)
希望这有帮助..