水晶报表没有显示任何数据。

5
我是一名刚接触 C# 和 ASP .NET 编程的新手。我正在使用 .net 制作水晶报表。我设置了 Dataset DataTable 作为报表数据源。
我从 linq 查询中获取数据,然后将它们填充到 Dataset 的实例中。我使用调试器查看,它显示查询结果有数据。但是我的水晶报表仅显示列标题,没有列数据。
这是我的代码:
    private void ViewReport()
    {
        DataSet1 Dataset = new DataSet1();
        DataTable rptTable = Dataset.Tables["Emp_info"];
        DataTable rptTab = Dataset.Tables["Attendance_table"];
        Ind_attendance_rpt rptAtd = new Ind_attendance_rpt();
        DataRow dataRow1; // declaring Row of dataset
        DataRow dataRow2;
        //IndividualAttendance rptAtt = new IndividualAttendance();
        var rport = from att in db.Attendance_tables
                    join emp in db.Emp_infos on att.Login_id equals emp.ID 
                    orderby att.Id
                    select new
                    {
                        att.Id,
                        emp.Emp_name,
                        emp.ID,
                        emp.Designation,
                        emp.Dept,
                        att.Entry_time,
                        att.Exit_time,
                        att.Status,
                        att.Date
                    };
        Dataset.Tables["Emp_info"].Clear();
        Dataset.Tables["Attendance_table"].Clear();
        foreach (var rt in rport)
        {
            dataRow1 = rptTable.NewRow();
            dataRow2 = rptTab.NewRow();
            dataRow2["Id"] = rt.Id;
            dataRow1["Emp_name"] = rt.Emp_name;
            dataRow1["Designation"] = rt.Designation;
            dataRow1["Dept"] = rt.Dept;
            dataRow2["Entry_time"] = rt.Entry_time;
            dataRow2["Exit_time"] = rt.Exit_time;
            dataRow2["Status"] = rt.Status;
            dataRow2["Date"] = rt.Date;
            dataRow2["Login_id"] = rt.ID;
            Dataset.Tables["Emp_info"].Rows.Add(dataRow1);
            Dataset.Tables["Attendance_table"].Rows.Add(dataRow2);
        }
        rptAtd.SetDataSource(Dataset);
        CrystalReportViewer1.ReportSource = rptAtd;
    }

有人能告诉我原因吗?

这是我现在得到的结果:

在此输入图片描述

调试图像:

在此输入图片描述

1个回答

1
在设置报表源后,尝试调用报表的“刷新”功能。
CrystalReportViewer1.Refresh();

您可能还需要在LINQ上使用ToList()方法;

rptAtd是Crystal报表,它没有TOList()方法。 - Rashad
请忽略我上一条消息。 - user3373870
你不必将报告绑定到数据集上。 因为你已经在报告中拥有了数据。 你可以像这样使用它:rptAtd.SetDataSource(rport.ToList()); - user3373870
当您处于调试模式时,您是否认为rport有任何价值? - user3373870
抱歉,我想不到其他的解决方法,而且我的机器上没有安装Chrystal Reports进行测试。 - user3373870
没关系,谢谢你的时间。 - Rashad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接