我需要重新设计公司软件使用的水晶报表。当前,每个Crystal报表都建立自己的与服务器的数据库连接。我只希望应用程序连接到服务器并将.NET Object Collection
传递给CrystalReport
,我在项目中创建了一个Location
类。使用EntityFramework
将相关表加载到List<T>
中,创建另一个集合IEnumerable<Location>
并遍历从数据库中检索的原始集合,仅将相关数据添加到IEnumerable<Location>
中,然后传递此列表以IEnumerable<Location>
的形式出现在我的ReportDocument
中,该列表是为了接受Location
对象而创建的。但是,即使已确认ReportDocument
包含元素,List<Location>
也只显示列名,而没有任何值。我在下面显示一些代码摘要。我错过了一步吗?
public class Location
{
public string LocationID {get; set;}
public int ItemID {get; set;}
public string ItemDescription {get; set;}
public int Quantity {get; set;}
}
...
private void LoadData()
{
LocationsReportDocument lrd = new LocationsReportDocument();
MyDataContext dc = new MyDataContext();
var v = dc.RackLocations.ToList();
IEnumerable<Location> locations = new IEnumerable<Location>();
foreach(var x in v)
{
Location l = new Location();
l.LocationID = x.Location;
l.ItemID = x.ItemID;
l.ItemDescription = x.Description;
l.Quantity = x.Qty;
locations.Add(l);
}
lrd.SetDataSource(locations);
...
}