以前没做过报表,不知道该怎么做,请各位指点哈呢
如果你是用的Visual Studio 2010以上的版本,并且是旗舰版,可以用rdlc报表。直接在添加项目中添加Report就可以使用。
具体怎么实现呢
@余莎莎:
假设你要做一个报表是:报价单
报价单一般都是分表头部分和表体部分,你应该可以用两个不同的DataSet把这两部分表示出来。
好了,现在这样做:
1. 添加rdlc报表. VS2010旗舰版里在要加大目录上右键,添加项目,选报表(Report)。这样vS2010会给你一个空的报表。
2. 在报表页面上,在左边的工具栏里选添加Dataset,按照步骤建立DataSet.应该建立2个,一个表头,一个表体。
3. 加好后,像用Word一样,把报表画出来。这个不用教了吧,呵呵。
4. 保存好rdlc文件。好,这样一个报表就搞定了。
你会问,我的报表是有参数的,如不同报价单号的报价单是不同的,怎么办?好问题,继续。
我们可以想一下,刚才的Dataset是为rdlc提供了数据,如果我们通过C#来给这个rdlc提供一个别的类似的dataset会发生什么情况?对数据会改变。我们通过C#来操纵传入Dataset的参数不用教了吧,直接通过sql语句的@parameter传入就行。好,我们来看怎么让C#操纵Dataset给rdlc
1. 新建一个空的页面,拉个ReportViewer控件进去,自己去调一下大小和美观。假设这个控件名字叫: ID="ReportViewer1"
2. 在页面的.cs文件中引入
using Microsoft.Reporting.WebForms;
3. 在页面的.cs文件中创建一个方法ViewReport(), 内容如下:
protected void ViewReport(string quotationCode) { //quotationCode是参数,只用于DataSet,和报表无关。
ReportViewer1.LocalReport.ReportPath = 'rdlc文件的位置';
LocalReport localReportQuotation = ReportViewer1.LocalReport;
DataSet dsHeader = new DataSet("DS_Quotation"); //与RDLC文件中对应的Dataset同名
dsHeader = getHeader(quotationCode);//getHeader函数自己写吧,不困难
DataSet dsEntry = new DataSet("DS_Entry");//与RDLC文件中对应的Dataset同名
dsEntry = getEntry(quotationCode); //getEntry函数自己写吧,不困难
ReportDataSource rdsHeader = new ReportDataSource();
rdsHeader.Name = "DS_Header";
rdsHeader.Value = dsHeader.Tables[0];
ReportDataSource rdsEntry = new ReportDataSource();
rdsEntry.Name = "DS_Entry";
rdsEntry.Value = dsEntry.Tables[0];
ReportViewer1.LocalReport.DataSources.Clear();
localReportQuotation.DataSources.Add(rdsHeader);
localReportQuotation.DataSources.Add(rdsEntry);
ReportViewer1.LocalReport.Refresh();
}
4. 在Page_Load事件中调用上面的方法,就行了。
@酱油能: 我去试下呢,看行不行
报表有很多种,一是用水晶报表等来做,一是自己写代码构建报表,还有一些其他的报表插件也可以
哦,谢谢哈,
参考水晶报表和微软自带的报表,这两个够用了吧。水晶报表有些东西不好控制,因此推荐学习微软自带的报表。
那微软自带的报表怎么做呢
@余莎莎:
参考1:http://www.c-sharpcorner.com/UploadFile/a72401/rdlc-report-generation-using-dataset/
参考2:http://www.cnblogs.com/waxdoll/archive/2006/02/25/337713.html
@wongdavid: 都是英文的,怎么看呢
@余莎莎: 那你看蜡人张的吧
1.vs里面有这样的控件啊
2.前台JS有 Highchart,你可以上官网看一下
推荐用Finereport来做,新手上手最快的一款报表了,操作都很简单,学起来很快,而且功能非常强大