C# 类中ReportViewer中的嵌套矩阵

C# 类中ReportViewer中的嵌套矩阵,c#,object,report,reportviewer,C#,Object,Report,Reportviewer,我希望有人能在这方面提供帮助,我已经创建了一个自定义对象类,该类包含多个数据段和多个列表。我通过使用多个SQL查询和一些C#计算来填充对象 在对象中,我有以下内容: private int cell_id; private string cell_name; private string cell_supervisor; private double cell_target; private double cell_routing_target, cell_att

我希望有人能在这方面提供帮助,我已经创建了一个自定义对象类,该类包含多个数据段和多个列表。我通过使用多个SQL查询和一些C#计算来填充对象

在对象中,我有以下内容:

private int cell_id;
    private string cell_name;
    private string cell_supervisor;
    private double cell_target;
    private double cell_routing_target, cell_attended_target, cell_lost_time_target, cell_unaccounted_time_target, cell_absence_target;
    private List<string> cell_machinists;
    private List<double> cell_routing_actual, cell_attended_actual, cell_lost_time_actual, cell_unaccounted_time_actual, cell_absence_actual;
    private List<int> cell_ncr_qty;
    private List<double> cell_ncr_cost;
    private List<int> cell_timelost;
问题是我如何设置一个报告,以我想要的格式列出所有单元格,并在这些单元格中列出机械师

报告输出示例:

完整的课程代码如下:

public class Cell
{
    private int cell_id;
    private string cell_name;
    private string cell_supervisor;
    private double cell_target;
    private double cell_routing_target, cell_attended_target, cell_lost_time_target, cell_unaccounted_time_target, cell_absence_target;
    private List<string> cell_machinists;
    private List<double> cell_routing_actual, cell_attended_actual, cell_lost_time_actual, cell_unaccounted_time_actual, cell_absence_actual;
    private List<int> cell_ncr_qty;
    private List<double> cell_ncr_cost;
    private List<int> cell_timelost;

    public Cell(int id, string name, double target)
    {
        cell_id = id;
        cell_name = name;
        cell_target = target;
    }
    public void setSupervisor(string name){
        cell_supervisor = name;
    }

    public void setTargets(double routings, double attended, double losttime, double unacccounted, double abscence)
    {
        cell_routing_target = routings;
        cell_attended_target = attended;
        cell_lost_time_target = losttime;
        cell_unaccounted_time_target = unacccounted;
        cell_absence_target = abscence;
    }
    public void setMachinist(string name, double routings, double attended, double lost_time, double unaccounted_time, int ncr_qty, double ncr_cost, int time_lost, double absence)
    {
        cell_machinists.Add(name);
        cell_routing_actual.Add(routings);
        cell_attended_actual.Add(attended);
        cell_lost_time_actual.Add(lost_time);
        cell_unaccounted_time_actual.Add(unaccounted_time);
        cell_ncr_qty.Add(ncr_qty);
        cell_ncr_cost.Add(ncr_cost);
        cell_timelost.Add(time_lost);
        cell_absence_actual.Add(absence);
    }


    public string CellName
    {
        get {
            return cell_name;
        }
    }

    public string Supervisor
    {
        get
        {
            return cell_supervisor;
        }
    }
    public List<string> Machinists
    {
        get
        {
            return cell_machinists;
        }
    }

}
公共类单元格
{
私有内部单元id;
私有字符串单元名称;
私人字符串单元\u主管;
专用双小区目标;
专用双小区路由目标、小区有人值守目标、小区丢失时间目标、小区不明时间目标、小区缺勤目标;
私人列表单元机械师;
私有列表单元格\路由\实际值、单元格\出席\实际值、单元格\丢失\时间\实际值、单元格\未记账\时间\实际值、单元格\缺席\实际值;
专用列表单元格不符合项数量;
私有列表单元ncr成本;
私有列表单元_timelost;
公共单元格(整数id、字符串名称、双目标)
{
单元id=id;
单元名称=名称;
单元\目标=目标;
}
public void setSupervisor(字符串名称){
cell_supervisor=名称;
}
公共无效设置目标(双路由、双参与、双丢失时间、双未计数、双缺席)
{
单元\路由\目标=路由;
单元\有人参与\目标=有人参与;
单元格\丢失\时间\目标=丢失时间;
单元格\未计算\时间\目标=未计算;
单元格\缺勤\目标=缺勤;
}
公共无效设置机械师(字符串名称、双路由、双人工、双损失时间、双未计算时间、整数ncr数量、双ncr成本、整数时间损失、双缺勤)
{
单元机械师。添加(名称);
单元格\路由\实际添加(路由);
单元格\有人出席\实际。添加(有人出席);
单元格\u损失的\u时间\u实际值。添加(损失的\u时间);
单元格未计算时间实际添加(未计算时间);
单元格不符合项数量添加(不符合项数量);
单元格不符合项成本。添加(不符合项成本);
单元格\u timelost.Add(丢失的时间);
单元格\缺勤\实际缺勤。添加(缺勤);
}
公共字符串单元名
{
得到{
返回单元格名称;
}
}
公共字符串管理器
{
得到
{
返回单元\u主管;
}
}
公开名单机械师
{
得到
{
返回单元机械师;
}
}
}

使用嵌套列表和子报告是简单的答案

使用嵌套列表和子报告是简单的答案

public class Cell
{
    private int cell_id;
    private string cell_name;
    private string cell_supervisor;
    private double cell_target;
    private double cell_routing_target, cell_attended_target, cell_lost_time_target, cell_unaccounted_time_target, cell_absence_target;
    private List<string> cell_machinists;
    private List<double> cell_routing_actual, cell_attended_actual, cell_lost_time_actual, cell_unaccounted_time_actual, cell_absence_actual;
    private List<int> cell_ncr_qty;
    private List<double> cell_ncr_cost;
    private List<int> cell_timelost;

    public Cell(int id, string name, double target)
    {
        cell_id = id;
        cell_name = name;
        cell_target = target;
    }
    public void setSupervisor(string name){
        cell_supervisor = name;
    }

    public void setTargets(double routings, double attended, double losttime, double unacccounted, double abscence)
    {
        cell_routing_target = routings;
        cell_attended_target = attended;
        cell_lost_time_target = losttime;
        cell_unaccounted_time_target = unacccounted;
        cell_absence_target = abscence;
    }
    public void setMachinist(string name, double routings, double attended, double lost_time, double unaccounted_time, int ncr_qty, double ncr_cost, int time_lost, double absence)
    {
        cell_machinists.Add(name);
        cell_routing_actual.Add(routings);
        cell_attended_actual.Add(attended);
        cell_lost_time_actual.Add(lost_time);
        cell_unaccounted_time_actual.Add(unaccounted_time);
        cell_ncr_qty.Add(ncr_qty);
        cell_ncr_cost.Add(ncr_cost);
        cell_timelost.Add(time_lost);
        cell_absence_actual.Add(absence);
    }


    public string CellName
    {
        get {
            return cell_name;
        }
    }

    public string Supervisor
    {
        get
        {
            return cell_supervisor;
        }
    }
    public List<string> Machinists
    {
        get
        {
            return cell_machinists;
        }
    }

}