当前位置: 代码迷 >> .NET报表 >> 求 水晶报表传递参数的例子!解决方案
  详细解决方案

求 水晶报表传递参数的例子!解决方案

热度:9022   发布时间:2013-02-25 00:00:00.0
求 水晶报表传递参数的例子!!!
VS2005 C# web 
  可以运行的,详细注释的例子,很急!!

目的:1. 在页面ddl控件中输入日期,单击Button, 报表显示符合该日期的内容;
  2. 根据后台查出的变量为条件,决定报表内容的显示。

  本人学浅,很菜,拜托各位前辈照顾下了!!!
  E-Mail :lxl.jsj@163.com

------解决方案--------------------------------------------------------
1. 在页面ddl控件中输入日期,单击Button, 报表显示符合该日期的内容; 

这是你程序根据日期去数据库提取数据,然后传给报表再显示


 2. 根据后台查出的变量为条件,决定报表内容的显示。 


这个不懂什么意思,要做动态的?
------解决方案--------------------------------------------------------
安装VS时如果选了CR,会在安装目录下带有详细的例子

一般位于如下位置:
D:\Program Files\Microsoft Visual Studio 9.0\Crystal Reports\Samples\

我装的是2008,所以与你的位置可能稍微有些不同

是个压缩包,解压缩

每个例子都用VB.Net/C# 做了APP模式和WEB模式

比如说参数这个,名字叫

CS_Win_RDObjMod_Parameters
CS_Web_RDObjMod_Parameters

虽然跟你的要求不完全一样,但是原理足够了~~
------解决方案--------------------------------------------------------
C# code
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 CrystalDecisions.CrystalReports.Engine;using CrystalDecisions.Shared;public partial class _Default : System.Web.UI.Page {    private const string PARAMETER_FIELD_NAME = "City";        protected void Page_Load(object sender, EventArgs e)    {    }    private void Page_Init(object sender, EventArgs e)    {        ConfigureCrystalReports();    }    private void ConfigureCrystalReports()    {        ArrayList arrayList = new ArrayList();        string reportPath = Server.MapPath("CustomersByCity.rpt");        crystalReportViewer.ReportSource = reportPath;        ParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo;        if (!IsPostBack)        {            defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(parameterFields);            defaultParameterValuesList.DataBind();            arrayList.Add("Paris");            arrayList.Add("Tokyo");            Session["arrayList"] = arrayList;        }        else        {            arrayList = (ArrayList)Session["arrayList"];        }                SetCurrentValuesForParameterField(parameterFields, arrayList);    }        private void SetCurrentValuesForParameterField(ParameterFields parameterFields, ArrayList arrayList)    {        ParameterValues currentParameterValues = new ParameterValues();        foreach (object submittedValue in arrayList)        {            ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();            parameterDiscreteValue.Value = submittedValue.ToString();            currentParameterValues.Add(parameterDiscreteValue);        }        ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];        parameterField.CurrentValues = currentParameterValues;    }    private ArrayList GetDefaultValuesFromParameterField(ParameterFields parameterFields)    {        ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];        ParameterValues defaultParameterValues = parameterField.DefaultValues;        ArrayList arrayList = new ArrayList();        foreach (ParameterValue parameterValue in defaultParameterValues)        {            if (!parameterValue.IsRange)            {                ParameterDiscreteValue parameterDiscreteValue = (ParameterDiscreteValue)parameterValue;                arrayList.Add(parameterDiscreteValue.Value.ToString());            }        }        return arrayList;    }    protected void redisplay_Click(object sender, EventArgs e)    {        ArrayList arrayList = new ArrayList();        foreach (ListItem item in defaultParameterValuesList.Items)        {            if (item.Selected)            {                arrayList.Add(item.Value);            }        }        Session["arrayList"] = arrayList;        ConfigureCrystalReports();    }}
  相关解决方案