我已成功地完成这项工作了。
简要概述
它通过具有“数据类”,这仅仅是包含变量和无码一个常规的C#类。然后实例化并填充数据,然后放入ArrayList中。 ArrayList绑定到报告查看器,以及要加载的报告的名称。在报表设计器中使用“.Net Objects”,而不是与数据库进行通信。
说明
我创建了一个类来保存数据,我的报告。这个类是由我手动从数据库中手动检索数据填充的。你如何做到这一点并不重要,但这里有一个例子:
DataSet ds = GeneratePickingNoteDataSet(id);
foreach (DataRow row in ds.Tables[0].Rows) {
CPickingNoteData pickingNoteData = new CPickingNoteData();
pickingNoteData.delivery_date = (DateTime)row["delivery_date"];
pickingNoteData.cust_po = (int)row["CustomerPONumber"];
pickingNoteData.address = row["CustomerAddress"].ToString();
// ... and so on ...
rptData.Add(pickingNoteData);
}
然后把这个类放到一个ArrayList中。数组列表中的每个元素对应完成报告中的一个“行”。
列表中的第一个元素还可以包含报告标题数据,并且列表中的最后一个元素可以包含报告页脚数据。因为这是一个ArrayList,正常的数组访问可以被用来获取他们:
((CPickingNoteData)rptData[0]).header_date = DateTime.Now;
((CPickingNoteData)rptData[rptData.Count-1]).footer_serial = GenerateSerialNumber();
一旦你有一个ArrayList充分的数据,将其绑定到你的报表查看器这样的,其中“rptData”是类型'ArrayList'
ReportDocument reportDoc = new ReportDocument();
reportDoc.Load(reportPath);
reportDoc.SetDataSource(rptData);
crystalReportViewer.ReportSource = reportDoc;
现在您需要将您的数据类绑定到报表本身。你这样做设计师里面:
- 打开字段浏览器选项卡(这可能是“查看”菜单下),然后右键单击“数据库字段”
- 点击“项目数据”
- 点击” .NET对象
- 向下滚动列表,找到您的 数据类(如果它不存在, 编译应用程序)
- 按下‘>>’,然后确定
- 您现在可以拖动类成员 转化为报告并将它们排列为您想要的 。
我发现了一个更好,更简单的方法... http://arcanecode.com/2009/02/09/using-a-local-reporting-services-2008-report-with-an-adonet-data-集/#评论 - 27511 – Piku 2010-02-19 12:45:13