第一步,建立一个asp的winfrom项目:
建立一个窗体。命名:Frmlist,
然后在工具箱去找到一个选项卡叫 Crystal Reports的,将里面的控件MicrosoftReportViewer拖入窗体Frmlist里面。因为他将会成为接下来做的报表的载体。报表不能直接显示,而是通过这个窗体Frmlist显示。
然后添加一个报表。就跟添加一个新窗体一样。自己去前面找。
将新报表命名为ctlTableDemo.rdlc
具体要打印什么,就在里面操作,他右边一样有工具箱。
如果打印表单,那就更简单了。直接连接数据库。因为报表一样要绑定数据库的,你直接绑定后,就可以直接拖拽到对于的表单位置了。
而在窗体FrmList里面的加载事件如下
private void Frmlist_Load(object sender, EventArgs e)
{
this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
this.reportViewer1.LocalReport.ReportPath = "ctlTableDemo.rdlc";
//
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ctlsDemo_vSales", LoadData()));
//
this.reportViewer1.RefreshReport();
}
private DataTable LoadData()
{
DataSet dataSet = new DataSet();
dataSet.ReadXml(@"data\ctlsDemo.xml");
return dataSet.Tables[0];
}
在LoadData()方法里面,你也可以写你绑定的表里面查询一下你要的集合。对应放到dataSet里面,最后返回到上面去。如果是多张表。在
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ctlsDemo_vSales", LoadData()));
这里,可以写多个绑定。比如
private void Frmlist_Load(object sender, EventArgs e)
{
this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
this.reportViewer1.LocalReport.ReportPath = "ctlTableDemo.rdlc";
//
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ctlsDemo_vSales", LoadData()));
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ctlsDemo_vSales", LoadData1()));
//
this.reportViewer1.RefreshReport();
}
private DataTable LoadData()
{
DataSet dataSet = new DataSet();
dataSet.ReadXml(@"data\ctlsDemo.xml");
return dataSet.Tables[0];
}
private DataTable LoadData1()
{
DataSet dataSet = new DataSet();
dataSet.ReadXml(@"data\ctlsDemo.xml");
return dataSet.Tables[0];
}
这样,你就可以基本上做出报表来了,但是报表里面对应了很多函数,自己慢慢去试试吧,挺简单的。参考部分IIF或者时间格式等函数http://qingyanxiyu.iteye.com/admin/blogs/1094538