C# WinForm:
-----------有个Person类,如下:
    public class Person
    {
        public string Name { get; set; }
        public string Sex { get; set; }
        public int Age { get; set; }
    }
在form1上有这么一个存放Person对象的List,如下:    List<Person> personList = new List<Person>();
-----------------------------------------------------------在form1上有一个Microsoft.Reporting.WinForms.ReportViewer控件叫做reportViewer1,
用过MS报表的朋友应该知道这是MS报表浏览器,(注:是MS的Report系列哦,不是水晶报表)然后,我为这个reportViewer1创建了一张Report,名为Report1.rdlc,
在Report1.rdlc上放了一个table,限定死了是三列,表头依次为:姓名、性别、年龄,分别对应一个Person对象的那三个属性。(注:用过的朋友应该知道:table是有表头、详细信息和表尾三个部分组成)form1上还有个button1,要求:点击button1时,将这个personList中各个Person对象的三个属性值依次放到Report1.rdlc上的那个table的详细信息里。===========================================================请问在button1.Click的代码中上用C#怎么去给这个Report1.rdlc上的这个table填充详细信息部分。
小弟愚钝,至今只知道怎么给Report1.rdlc上的某一个textbox赋值,而不知道怎么填充table,查阅了很多资料依旧无头绪。(注:我这里只有个personList,并无实际数据库的啥东西(如DataTable或DataSet),所以如果需要设置数据源什么的请用personList)因为比较急,打了这么多字,希望大家看的明白些,有代码或步骤说明的最好。
万分感谢!

解决方案 »

  1.   

    没用过,不过应该一样有数据源设置,你可以查查MSDN
      

  2.   

    我以前做的时候是循环在报表上添内容的,先在设计器上算好像素,然后循环添Text,添线。
    没有用过自动的数据绑定功能。帮你顶下。
      

  3.   

    up  up   up   up  
    一直未解啊
      

  4.   

    up  up  up  up  
    一直未解啊
      

  5.   

    up  up   up    up 
    我也想知道~~
      

  6.   

    List转DataTable 我会,
    我是不知道怎么使用代码去填充Report的table
      

  7.   

    将personList转换成Table,
    这个自己写一个方法就能成功
      

  8.   

    下面是简单的例子,没有测试,凭记忆,可能有些关键字不正确
    private DataTable GetTable(List<Person> list)
    {DataTalbe t=new DataTable();
    t.Columns.Add(new DataColumn("name",typeof(strimg));
    t.Columns.Add(new DataColumn("sex",typeof(strimg));
    t.Columns.Add(new DataColumn("age",typeof(int));foreach(Person item in list)
    {
        DataRow dr=t.NewRow();
        t["name"]=item.Name;
        t["sex"]=item.sex;
        t["age"]=itme.age;
        t.Rows.Add(dr);}
       return t;
    }然后你就使用这个t(DataTable)作为报表的数据源
    不知道RDLC是否可以使用集合作为数据源,按我想象应该可以,这个应该和你的报表定义有关
      

  9.   

    根本不需要转换,直接用ILIst作为datasource赋给reportviewer
      

  10.   

    不管是否需要将List专成DataTable,这都不是问题。
    小弟不明白的是怎么用c#代码将其设置成reporter的datasource,以及怎么设置table中对应列的参数以便正确显示
      

  11.   

    up  up  up   up
      

  12.   

    ReportViewer.LocalReport.DataSources.Add方法添加数据源
    其参数是Microsoft.Reporting.WinForms.ReportDataSource类
    ReportDataSource有一个构造是
    public ReportDataSource (
    string name,
    Object dataSourceValue
    )
    其中dataSourceValue可为DataTable,具体可以参考MSDN
    至于DataTable中的列与报表中的列对应,那是你设计报表的时候指定的
    如果希望动态指定报表中的列与DataTable相应的列,需要动态构造RDLC报表,
    其实RDLC报表就是一个符合XML定义的字符串,如果感兴趣,可以查阅相关资料,
    就是说,关于RDLC报表,可以实现让客户自定义报表及数据源,不过你需要掌握
    RDLC报表的定义。
    我们一般使用是先定义后RDLC报表的定义,动态实现数据源的绑定,这一点上面的
    知识应该足够。
      

  13.   

    哦  谢谢特别(男)的方法,终于解决了问题。
    我再问下,如果这个table最后数据的行数非常多。在打印报表时,它是只打印看的见的行,还是会自动分页以保证打印出所有行啊?
      

  14.   

    微软的Report有自己的分页机制
    不要问我怎么做,我也是先看MSDN然后再回答你的