一共有两个类,一个用户,一个订单。如下
class user
{
private string uid;
private string uname;
....
private List<order> uorder;
....}
class order
{
private string orderid;
prvate string ordercontent;
....
}也就是一个用户对应多个订单,一共有多个用户。我需要以用户为单位做报表,例如单个用户为一页,
页面上方显示用户的基本信息,下方显示该用户的订单信息
下一页显示下一个用户的订单信息。我现在设置报表的数据源的时候,将数据源设定为系统对象,也就是user类,可是在绑定的字段中却看不到user类的order属性
我写下面的代码也不行            List<UserInfo> ucollection = new List<UserInfo>();
            for (int i = 0; i < 5; i++)
            {                UserInfo uu = new UserInfo();
                uu.Username = "HI" + i.ToString();
                uu.Telephone = "123" + i.ToString();
                uu.Sex = i.ToString();
                uu.Age = "88";
                ucollection.Add(uu);
                for (int j = 0; j < 5; j++)
                {
                    yuyue yy = new yuyue();
                    yy.Yuyueid = j.ToString() + i.ToString();
                    yy.Yuyuename = "s";
                    yy.Yuyueneirong = "sf";
                    uu.Yuyuecollection.Add(yy);                              this.CrystalReport21.Subreports[0].SetDataSource(uu.Yuyuecollection); 
//这里肯定不可以这样写,不过我也不知道怎么写
                }                    
               
            }
            this.CrystalReport21.SetDataSource(ucollection);
使用子报表也没弄好
希望大家给我点思路,或者有类似的例子给我参考下。

解决方案 »

  1.   

    其实我用另外一个方法也做出来了,不过感觉逻辑层次比较混乱
    就是在order类中加入了一个userid属性,和user类对应起来
    然后设置子报表的关联字段为userid
    代码如下: List<UserInfo> ucollection = new List<UserInfo>();
    List<Order> uordercollection=new List<order>();//这里加入了一个订单类的集合//这样user集合和订单集合是通过类中的id关联起来的 就没有了以前的层次感            for (int i = 0; i < 5; i++)
                {                UserInfo uu = new UserInfo();
                    uu.Username = "HI" + i.ToString();
                    uu.Telephone = "123" + i.ToString();
                    uu.Sex = i.ToString();
                    uu.Age = "88";
                    ucollection.Add(uu);
                    for (int j = 0; j < 5; j++)
                    {
                        yuyue yy = new yuyue();
                        yy.Yuyueid = j.ToString() + i.ToString();
                        yy.Yuyuename = "s";
                        yy.Yuyueneirong = "sf";
                        uu.ordercollection.Add(yy);
                    }  
                   uordercollection.addrange(uu.ordercollection);   
                   
                }
                this.CrystalReport21.SetDataSource(ucollection); this.CrystalReport21.Subreports[0].SetDataSource(uordercollection); 反正功能这样实现了,不知道用我以前的那种方法能不能更好的实现