我用下面的程序向水晶报表存储过程传递参数,参数是由下拉列表的选项(droplist1,droplist2)给定的给,droplist1的autopostback属性已付为true,在水晶报表中的数据库专家中选择该存储过程时对其参数付了空值,但是在运行时水晶报表中并不显示任何内容,变换选项droplist1之后也是如此。如在数据库专家中付给参数值,则在运行时总是显示付给参数的年月所产生的值,这是为什么呢?
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
ParameterFields pfs=CrystalReportViewer1.ParameterFieldInfo;
ParameterField pf=pfs["@nian"];
ParameterDiscreteValue pdv=new ParameterDiscreteValue();
pdv.Value=2004;
pf.CurrentValues.Add(pdv);
ParameterField pf1=pfs["@yue"];
ParameterDiscreteValue pdv1=new ParameterDiscreteValue();
pdv1.Value=7;
pf1.CurrentValues.Add(pdv1);
CrystalReportViewer1.ParameterFieldInfo=pfs;
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
DataBind();
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.Page_Load);
this.DropDownList2.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
SetParameterFields();
}
public void SetParameterFields()
{
ParameterFields pfs=CrystalReportViewer1.ParameterFieldInfo;