当前位置: 代码迷 >> J# >> 付给存储过程参数,为什么不报表不动态变化呢?解决方法
  详细解决方案

付给存储过程参数,为什么不报表不动态变化呢?解决方法

热度:5551   发布时间:2013-02-25 00:00:00.0
付给存储过程参数,为什么不报表不动态变化呢?

我用下面的程序向水晶报表存储过程传递参数,参数是由下拉列表的选项(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;
      
  相关解决方案