DataSet 不支持 System.Nullable<>
我有一个应用程序,其中有按钮可以预览水晶报告中制作的报告。我添加了数据集作为报告的数据源,并从工具箱中拖动了数据表,并将我需要的字段添加为列。我从此链接 http://aspalliance.com/2049_Use_LINQ_to_Retrieve_Data_for_Your_Crystal_Reports.2 获取了说明。这是我的第二份报告,第一份报告有效,根本没有遇到任何问题,这就是我感到困惑的原因,更不用说它还有可为空的列。错误说:DataSet 不支持 System.Nullable<>。
private void ShowReportView()
{
string reportFile = "JudgeInfoFMReport.rpt";
ObservableCollection<tblJudgeFileMaint> judgeFileMaintList;
judgeFileMaintList = GenerateReport();
if (judgeFileMaintList.Count > 0)
{
CrystalReportViewerUC crview2 = new CrystalReportViewerUC();
crview2.SetReportPathFile(reportFile, judgeFileMaintList);
crview2.ShowDialog();
}
else
{
System.Windows.MessageBox.Show("No record found.", module, MessageBoxButton.OK, MessageBoxImage.Information);
}
}
private ObservableCollection<tblJudgeFileMaint> GenerateReport()
{
var result = FileMaintenanceBusiness.Instance.GetAllJudgeInfoList();
return new ObservableCollection<tblJudgeFileMaint>(result);
}
错误出现在我设置数据源 report.SetDataSource 的部分,
public bool SetReportPathFile(string reportPathFile, IEnumerable enumerable)
{
string reportFolder = @"\CrystalReportViewer\Reports\";
string filename = System.Windows.Forms.Application.StartupPath + reportFolder + reportPathFile; // "\\Reports\\CrystalReports\\DateWiseEmployeeInfoReport.rpt";
ReportPathFile = filename;
report.Load(ReportPathFile);
report.SetDataSource(enumerable);
report.SetDatabaseLogon("sa", "admin007");
bRet = true;
}
_IsLoaded = bRet;
return bRet;
}
我读了一些答案,并说我应该将 null 值设置为 DBNUll ,其中如果它可以为空,我会在每列的属性窗口中执行此操作。有人可以帮我吗?谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您的问题可以在这篇文章中看到,但是以通用的方式......这样您就可以将对象传递给键入的数据集!
.NET - 将通用集合转换为数据表
Your question can be seen in this post, but in a generic way ... that way you can pass an Object to a DataSet typed!
.NET - Convert Generic Collection to DataTable
想通了。通过使用复制到某处的集合扩展,我忘记了链接。不管是谁上这堂课,功劳都归于你。
类方法看起来像这样。
那么您可以通过执行以下操作来使用它来获取报告的来源:
figured it out. by using a collectionextention, copied somewhere, I forgot the link. Os to whoever it is who made the class, credits to you.
class method looks like this.
then you can use it by doing this in getting your source to your report:
我从其他建议的答案中找不到什么帮助,但这个解决方案有效。
解决此问题的另一种方法是使数据列可为空。
https://learn. microsoft.com/en-us/dotnet/api/system.data.datacolumn.allowdbnull?view=netcore-3.1
I found little help from the other proposed answers but this solution worked.
A different way to solve this problem is to make the data column nullable.
https://learn.microsoft.com/en-us/dotnet/api/system.data.datacolumn.allowdbnull?view=netcore-3.1