Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Devexpress动态创建外部报告并将对象动态绑定为数据源_C#_Linq_Devexpress_Xtrareport - Fatal编程技术网

C# Devexpress动态创建外部报告并将对象动态绑定为数据源

C# Devexpress动态创建外部报告并将对象动态绑定为数据源,c#,linq,devexpress,xtrareport,C#,Linq,Devexpress,Xtrareport,我有三个类(Employee、EmployeeCard和Children)是这样实现的 public class Employee { public Employee() { Children = new List<Child>(); } public virtual string FirstName { get; set; } public virtual string LastName { get; set; } public v

我有三个类(Employee、EmployeeCard和Children)是这样实现的

public class Employee
{
   public Employee()
   {
       Children = new List<Child>();
   }
   public virtual string FirstName { get; set; }
   public virtual string LastName { get; set; }
   public virtual EmployeeCard EmployeeCard { get; set; }
   public virtual IList<Child> Children { get; protected set; }
   public virtual void AddChild(Child child)
   {
       child.Employee = this;
       Children.Add(child);
   }
   public static List<Employee> GetData()
   {
       List<Employee> empList = new List<Employee>();
       for(i=0;i<5;i++)
       {
           Employee emp = new Employee();
           emp.FirstName = "Fname" + i.ToString();
           emp.LastName = "Lname" + i.ToString();
           emp.EmployeeCard = new EmployeeCard();
           emp.EmployeeCard.StartWorkingDate = DateTime.Now.Date.AddDays(-i);
           empList.Add(emp);
            for(int j=0;j<2;j++)
            {
                Children child = new Children();
                child.FirstName = "ChildFname" + j.ToString();
                child.LastName = "ChildLname" + j.ToString();
                empList.Children.Add(child);
            }
       }
       return empList;
   }
}

public class Child
{
   public virtual string FirstName { get; set; }
   public virtual string LastName { get; set; }
   public virtual Employee Employee { get; set; }  
}

public class EmployeeCard
{
   public virtual Employee Employee { get; set; }
   public virtual DateTime? StartWorkingDate { get; set; }
}
var detailReportBandEmployeeCard = new DetailReportBand
{
     KeepTogether = true,
     DataMember = "EmployeeCard",
     DataSource = ReportDataSource
};
for (int j = 0; j < 2; j++)
{
     Child child = new Child();
     child.FirstName = "ChildFname" + j.ToString();
     child.LastName = "ChildLname" + j.ToString();
     emp.AddChild(child);
}
公共类员工
{
公职人员()
{
Children=新列表();
}
公共虚拟字符串FirstName{get;set;}
公共虚拟字符串LastName{get;set;}
公共虚拟员工卡员工卡{get;set;}
公共虚拟IList子项{get;protected set;}
公共虚拟void AddChild(子项)
{
child.Employee=this;
添加(child);
}
公共静态列表GetData()
{
List empList=新列表();

对于(i=0;i而言,问题在于您为卡片创建了这样的细节栏

public class Employee
{
   public Employee()
   {
       Children = new List<Child>();
   }
   public virtual string FirstName { get; set; }
   public virtual string LastName { get; set; }
   public virtual EmployeeCard EmployeeCard { get; set; }
   public virtual IList<Child> Children { get; protected set; }
   public virtual void AddChild(Child child)
   {
       child.Employee = this;
       Children.Add(child);
   }
   public static List<Employee> GetData()
   {
       List<Employee> empList = new List<Employee>();
       for(i=0;i<5;i++)
       {
           Employee emp = new Employee();
           emp.FirstName = "Fname" + i.ToString();
           emp.LastName = "Lname" + i.ToString();
           emp.EmployeeCard = new EmployeeCard();
           emp.EmployeeCard.StartWorkingDate = DateTime.Now.Date.AddDays(-i);
           empList.Add(emp);
            for(int j=0;j<2;j++)
            {
                Children child = new Children();
                child.FirstName = "ChildFname" + j.ToString();
                child.LastName = "ChildLname" + j.ToString();
                empList.Children.Add(child);
            }
       }
       return empList;
   }
}

public class Child
{
   public virtual string FirstName { get; set; }
   public virtual string LastName { get; set; }
   public virtual Employee Employee { get; set; }  
}

public class EmployeeCard
{
   public virtual Employee Employee { get; set; }
   public virtual DateTime? StartWorkingDate { get; set; }
}
var detailReportBandEmployeeCard = new DetailReportBand
{
     KeepTogether = true,
     DataMember = "EmployeeCard",
     DataSource = ReportDataSource
};
for (int j = 0; j < 2; j++)
{
     Child child = new Child();
     child.FirstName = "ChildFname" + j.ToString();
     child.LastName = "ChildLname" + j.ToString();
     emp.AddChild(child);
}
并将数据源绑定到此属性

public virtual EmployeeCard EmployeeCard { get; set; }
您只能将列表用作数据源,EmployeCard不是列表。 如果您只有一个对象,则不需要detailBandEmployeeCard,您可以将标签直接放入detailBandEmployee中

XRLabel lbStartDate = new XRLabel()
{
    LocationF = new PointF(200, 10),
    SizeF = new SizeF(440, 50),
    TextAlignment = TextAlignment.BottomLeft,
    Font = new Font("Arial", 24)
};
//detailBandEmployeeCard.Controls.Add(lbStartDate);
//lbStartDate.DataBindings.Add("Text", null, "StartWorkingDate");

detailBandEmployee.Controls.Add(lbLastName);
lbStartDate.DataBindings.Add("Text", null, "EmployeeCard.StartWorkingDate");
GetData()在应该是Child的时候使用Children类,而且它不会填充列表

public class Employee
{
   public Employee()
   {
       Children = new List<Child>();
   }
   public virtual string FirstName { get; set; }
   public virtual string LastName { get; set; }
   public virtual EmployeeCard EmployeeCard { get; set; }
   public virtual IList<Child> Children { get; protected set; }
   public virtual void AddChild(Child child)
   {
       child.Employee = this;
       Children.Add(child);
   }
   public static List<Employee> GetData()
   {
       List<Employee> empList = new List<Employee>();
       for(i=0;i<5;i++)
       {
           Employee emp = new Employee();
           emp.FirstName = "Fname" + i.ToString();
           emp.LastName = "Lname" + i.ToString();
           emp.EmployeeCard = new EmployeeCard();
           emp.EmployeeCard.StartWorkingDate = DateTime.Now.Date.AddDays(-i);
           empList.Add(emp);
            for(int j=0;j<2;j++)
            {
                Children child = new Children();
                child.FirstName = "ChildFname" + j.ToString();
                child.LastName = "ChildLname" + j.ToString();
                empList.Children.Add(child);
            }
       }
       return empList;
   }
}

public class Child
{
   public virtual string FirstName { get; set; }
   public virtual string LastName { get; set; }
   public virtual Employee Employee { get; set; }  
}

public class EmployeeCard
{
   public virtual Employee Employee { get; set; }
   public virtual DateTime? StartWorkingDate { get; set; }
}
var detailReportBandEmployeeCard = new DetailReportBand
{
     KeepTogether = true,
     DataMember = "EmployeeCard",
     DataSource = ReportDataSource
};
for (int j = 0; j < 2; j++)
{
     Child child = new Child();
     child.FirstName = "ChildFname" + j.ToString();
     child.LastName = "ChildLname" + j.ToString();
     emp.AddChild(child);
}
for(int j=0;j<2;j++)
{
子项=新子项();
child.FirstName=“ChildFname”+j.ToString();
child.LastName=“ChildLname”+j.ToString();
行政长官AddChild(child);
}

您可以发布如何进行绑定以及如何构建employee对象吗?@deramko请参阅更新