有沒有人想過如何將Crystal Reports與Linq to SQL一起使用?Crystal Reports和LINQ
12
A
回答
4
您可以將您的LINQ的結果設置爲List
,你不必嚴格使用DataSet
作爲報告SetDataSource
,您可以用IEnumerable
提供一個水晶報表數據。由於List
繼承自IEnumerable
,因此您可以將報告的數據源設置爲列表,您只需在您的LINQ結果集上調用.ToList()
方法即可。基本上:
CrystalReport1 cr1 = new CrystalReport1();
var results = (from obj in context.tSamples
where obj.ID == 112
select new { obj.Name, obj.Model, obj.Producer }).ToList();
cr1.SetDataSource(results);
crystalReportsViewer1.ReportSource = cr1;
1
雖然我自己沒有嘗試過,但它似乎可以通過使用DataContext.LoadOptions的組合來使其渴望接受關係,而GetCommand(IQueryable)返回保留關係的SQLCommand對象。
查看更多關於MSDN Forums的信息。
2
msdn doc的建議您可以將Crystal Report綁定到ICollection。
我可以推薦一個List(T)嗎?
0
如果您有dbnull值,上面的代碼將無法在Web應用程序中工作。您必須將結果列表對象轉換爲數據集或數據表。沒有內置的方法。我經歷了同樣的問題,經過幾個小時在互聯網上的探索,我找到了解決方案,並希望在這裏分享,以幫助任何人堅持下去。你必須做的一類在你的項目中: -
public class CollectionHelper
{
public CollectionHelper()
{
}
// this is the method I have been using
public DataTable ConvertTo<T>(IList<T> list)
{
DataTable table = CreateTable<T>();
Type entityType = typeof(T);
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);
foreach (T item in list)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
{
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
}
table.Rows.Add(row);
}
return table;
}
public static DataTable CreateTable<T>()
{
Type entityType = typeof(T);
DataTable table = new DataTable(entityType.Name);
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);
foreach (PropertyDescriptor prop in properties)
{
// HERE IS WHERE THE ERROR IS THROWN FOR NULLABLE TYPES
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(
prop.PropertyType) ?? prop.PropertyType);
}
return table;
}
}
,在這裏設置您的水晶報表
CrystalReport1 cr1 = new CrystalReport1();
var results = (from obj in context.tSamples
where obj.ID == 112
select new { obj.Name, obj.Model, obj.Producer }).ToList();
CollectionHelper ch = new CollectionHelper();
DataTable dt = ch.ConvertTo(results);
cr1.SetDataSource(dt);
crystalReportsViewer1.ReportSource = cr1;
相關問題
- 1. LINQ Crystal Reports
- 2. Crystal Reports和VS2010
- 3. Visual Web Developer和Crystal Reports 11
- 4. Crystal Reports和SQL Server 2008 datetimeoffset
- 5. Crystal Reports和添加值
- 6. Crystal Reports和WMF圖像
- 7. Crystal Reports和登錄問題
- 8. Crystal Reports CrystalImageHandler和MVC .NET
- 9. Crystal Reports SQL和Fluke MetTrack
- 10. Crystal reports related
- 11. Crystal Reports 2008
- 12. crystal reports sap .net
- 13. Crystal Reports傳奇
- 14. Crystal Reports版本
- 15. Crystal Reports幫助
- 16. Crystal Reports databaselogin promt
- 17. Crystal reports charts
- 18. Crystal Reports Css類
- 19. Crystal Reports:在
- 20. Crystal Reports掛起
- 21. Crystal Reports C#
- 22. Crystal Reports sumif
- 23. Crystal reports sum
- 24. VB.NET和Crystal Reports - 數據集和更
- 25. Crystal Reports本地化
- 26. Crystal Reports Visual Studio 2012
- 27. Crystal Reports HTML格式
- 28. Crystal Reports 2008-Sage x3
- 29. Crystal Reports Framework下載
- 30. Crystal Reports錯誤20997