vs2005下的水晶报表比较好用,只要注册一下就可以了,然后再运行一下两个msi文件就可以了,只是要注意,iis配置里,不要改变wwwroot目录,不然的话,水晶报表的toobar图出不来,其实只要复制一下aspclient文件夹就可以了,
传参的问题也不是很烦,只要参考以下代码就可以了
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
public partial class report_lcprn : System.Web.UI.Page
{
ReportDocument Rd = new ReportDocument();
protected void Page_Load(object sender, EventArgs e)
{
//sendYear="+this.ddlyear.SelectedValue.Trim()+"&sendLC="+this.ddlLc.SelectedValue.Trim()+"&sendPxAdd="
//接收传参
string revYear = Request.QueryString.Get("sendYear");
string revLC = Request.QueryString.Get("sendLC");
string revPxAdd = Request.QueryString.Get("sendPxAdd");
//建立联接
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["con"]);
con.Open();
//筛出相关年份,轮次和培训地点数据
string qry1 = "select * from cypxinfo where cypxyear='"+revYear+"' and cyring='"+revLC+"' and cypxadd='"+revPxAdd+"'";
SqlDataAdapter da = new SqlDataAdapter(qry1, con);
DataSet ds = new DataSet();
da.Fill(ds, "cypxinfo");
Rd.Load(Server.MapPath("..//report//lcRPTprint.rpt"));
Rd.SetDataSource(ds.Tables["cypxinfo"]);
this.CrystalReportViewer1.ReportSource = Rd;
//传参到报表
string sendRPTTitle, sendRPTAdd, sendRPTLC;
//传title
sendRPTTitle = revYear.ToString() + "年会计从业人员继续教育名单";
ParameterFields paramFields = new ParameterFields();
ParameterField pftitl = new ParameterField();
pftitl.ParameterFieldName = "repTitl"; //这里是水晶报表里的参数变量
ParameterDiscreteValue dctitl = new ParameterDiscreteValue();
dctitl.Value = sendRPTTitle;
pftitl.CurrentValues.Add(dctitl);
paramFields.Add(pftitl);
//传轮次
ParameterField pfLC = new ParameterField();
pfLC.ParameterFieldName = "repPxLc";
ParameterDiscreteValue dcLc = new ParameterDiscreteValue();
dcLc.Value = revLC;
pfLC.CurrentValues.Add(dcLc);
paramFields.Add(pfLC);
//传培训点
ParameterField pfAdd = new ParameterField();
pfAdd.ParameterFieldName = "repPxAdd";
ParameterDiscreteValue dcAdd = new ParameterDiscreteValue();
dcAdd.Value = revPxAdd;
pfAdd.CurrentValues.Add(dcAdd);
paramFields.Add(pfAdd);
CrystalReportViewer1.ParameterFieldInfo = paramFields;
}
}