Winforms怎么把dataGridView 里面的数据用水晶报表打印出来  dataGridView 里面的数据不是通过数据库得来的..
谢谢各位大哥了...

解决方案 »

  1.   

    那把dataGridView的数据直接传给水晶报表不就可以了嘛!
    private void Form1_Load(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("name");
                dt.Columns.Add("flag");
                DataRow dr = dt.NewRow();
                dr.ItemArray = new string[] { "ss", "1" };
                dt.Rows.Add(dr);
                DataRow dr1 = dt.NewRow();
                dr1.ItemArray = new string[] { "ss", "1" };
                dt.Rows.Add(dr1);
                DataRow dr2 = dt.NewRow();
                dr2.ItemArray = new string[] { "ss", "0" };
                dt.Rows.Add(dr2);
                this.dataGridView1.DataSource = dt;
                CrystalReportIn oRtp = new CrystalReportIn(); 
                oRtp.SetDataSource(dt);                      
                crystalReportViewer1.ReportSource = oRtp; 
                
            }
      

  2.   

      这样不行啊! 无法获取到DataTable
      

  3.   

    你到底是要把打印dataGridView里的内容还是要做水晶报表啊?
      

  4.   

    不是数据库取值那可能需要另一种方式了!在水晶报表中拖点文本框进去吧!然后自己再参照这代码修改修改!
    private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("name");
                dt.Columns.Add("flag");
                DataRow dr = dt.NewRow();
                dr.ItemArray = new string[] { "ss", "1" };
                dt.Rows.Add(dr);
                DataRow dr1 = dt.NewRow();
                dr1.ItemArray = new string[] { "dd", "1" };
                dt.Rows.Add(dr1);
                DataRow dr2 = dt.NewRow();
                dr2.ItemArray = new string[] { "ff", "0" };
                dt.Rows.Add(dr2);
                //this.dataGridView1.DataSource = dt;
                CrystalReport1 cr = new CrystalReport1();
                CrystalDecisions.CrystalReports.Engine.TextObject t = (CrystalDecisions.CrystalReports.Engine.TextObject)cr.ReportDefinition.ReportObjects["Text1"];
                for(int i=0;i<dt.Rows.Count;i++)
                {
                    t.Text+=dt.Rows[i].ItemArray[0].ToString();
                }
                this.crystalReportViewer1.ReportSource = cr;        }