刚打开窗口时,参数第1次传递成功不出现“输入参数值”对话框,预览成功。但单击预览窗口工具栏“刷新”按钮(即执行RefreshReport()方法)时,就出现了“输入参数值”对话框。请问如何在“刷新”时不出现“输入参数值”对话框。
我在Google里面找了六、七个小时仍没有找到答案,希望有人能帮忙解决。

解决方案 »

  1.   

    使用推模式即可.在GOOGLE上搜索关键字"推模式"
      

  2.   

    我的是Windows应用程序有上百个水晶报表,Form窗口(打算做成上百个水晶报表的通用预览窗口)Load代码是这样的(第1次打开窗口时报表预览正常,没有出现“输入参数值”对话框):
    ReportDocument m_rptDoc = new ReportDocument();
    m_rptDoc.Load(@"D:\ADJXC\LbReport\" + m_strRptFile+".rpt");
    m_rptDoc.SetDataSource(m_dsParm);//m_dsParm是DataSet,里面包含两个表,是传递进来的参数;
    crystalReportViewer1.ReportSource = m_rptDoc;
    //以下自定义方法为水晶报表参数赋值
    Hashtable ht = new Hashtable();
    ht.Add("FontSize", 9);  //为字体参数赋值
    BuildReportViewerParameters(crystalReportViewer1, ht);// 当用户改变报表字体及页面设置时,需要刷新水晶报表
    // 所以在工具栏的“刷新”按钮写下代码:
    crystalReportViewer1.RefreshReport();// 刷新报表// 当执行这行代码时就出现“输入参数值”对话框,即使重新给报表参数赋值也一样。
    // 很苦脑,搞了很久都不知要怎么才可以不出现“输入参数值”对话框?期待继续帮忙解决。
      

  3.   

    crystalReportViewer1.RefreshReport();// 刷新报表 把这个去掉!!不需要这个!!
      

  4.   

    http://blog.csdn.net/pfworld/archive/2008/02/26/2122283.aspx
      

  5.   

    更新的时候可以重新加载一边更新参数的报表,但是不要使用RefreshReport()否则就会弹出输入参数值的对话框!
      

  6.   

    是不是就真的没有办法当执行crystalReportViewer1.RefreshReport();方法时不弹出“输入参数值”对话框?
    当然不能改写RefreshReport()方法。
    要刷新水晶报表只有重新加载!这也太邪门了。
    好象VB有个属性设置为false就可以防止弹出“输入参数值”对话框,但C#没有发现这样的属性。
      

  7.   

    Refresh()的时候会把参数属性清空,所以系统弹出“输入参数值”对话框。
      

  8.   

    用程序写好,把参数赋值!
    参考:
    http://blog.csdn.net/lifuyun/archive/2008/05/08/2416435.aspx
      

  9.   

    参数传递是没有问题。我已经传递成功了。
    现在问题是更改了页面设置,再执行crystalReportViewer1.RefreshReport();// 刷新报表
    会弹出“输入参数值”对话框。即使重新传递参数也一样。
      

  10.   

    不要使用RefreshReport()直接再执行一边栽入报表!!就可以达到你想要得效果!
      

  11.   

    你是不是把传参数写在上面了?
    像这样:
    fs.SetParameterValue("total", 480);
    fs.SetParameterValue("Leaftotal", 480);
    this.crystalReportViewer1.ReportSource = fs;写成this.crystalReportViewer1.ReportSource = fs;
    fs.SetParameterValue("total", 480);
    fs.SetParameterValue("Leaftotal", 480);
    估计就没事了            
      

  12.   

    CRParams crReportDocument;
    ParameterFieldDefinitions crParameterFieldDefinitions;
    ParameterFieldDefinition crParameterFieldDefinition;
     ParameterValues crParameterValues;
      ParameterDiscreteValue crParameterDiscreteValue;crReportDocument = new CRParams();

    //Get the collection of parameters from the report
                crParameterFieldDefinitions = crReportDocument.DataDefinition.ParameterFields;
                
    //Access the specified parameter from the collection
                crParameterFieldDefinition = crParameterFieldDefinitions["Country"];            //Get the current values from the parameter field.  At this point
                //there are zero values set.
    crParameterValues = crParameterFieldDefinition.CurrentValues;            //Set the current values for the parameter field
                crParameterDiscreteValue = new ParameterDiscreteValue();
                crParameterDiscreteValue.Value = "Canada"; //1st current value            //Add the first current value for the parameter field
                crParameterValues.Add(crParameterDiscreteValue); crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);            //Set the viewer to the report object to be previewed.
                crystalReportViewer1.ReportSource = crReportDocument;
      

  13.   

    我已经是这样给参数赋值了。
    但只要一执行crystalReportViewer1.RefreshReport();// 刷新报表 
    会弹出“输入参数值”对话框。即使重新传递参数也一样。
      

  14.   

    刷新过后再赋值?那时已经弹出“输入参数值”对话框了,太晚了。
    我们希望是执行crystalReportViewer1.RefreshReport();// 刷新报表
    不弹出“输入参数值”对话框。我看没有一个人能解决了!
      

  15.   

    我试了下。但出现一个问题,大家看下
    逐步调试出来结果是一样的,但如果直接运行还是一样跳出来
    用了Application.DoEvents();也不行
    看LZ有没有好的办法学习下
      

  16.   

    有没有不重新加载,执行RefreshReport()方法不弹出“输入参数值”对话框?
    当然不要重写RefreshReport()方法。
      

  17.   

    有啊,你可以换种方法来确定参数值啊
    用textObject来实现啊。这样就不会弹出了
      

  18.   

    不要用
    crystalReportViewer1.RefreshReport();把ReportSource重新赋一次值即可
    crystalReportViewer1.ReportSource = rptDateExpired1;
      

  19.   

    好久了,将refreshbutton控件禁用,我暂时是这样解决的
      

  20.   

    的确会出现这个情况,我正在帮你找出某个属性设置,在之前的.NET 中,有个SHOWPARA**开头的属性,改成FALSE就可以了,现在却没有找到,估计你用的也是VB2008吧?