CrystalReport1 rpt = new CrystalReport1();            
            TextObject gettext = rpt.ReportDefinition.ReportObjects["Text12"] as extObject;
           
            gettext.Text = "sfsfsfsdfdsfsd";
            rpt.Refresh();
            MessageBox.Show(gettext.Text);
            strsql = "select * from sumhz";
            ds = db.SelectDataBase(strsql, "sumhz");
            this.reportDocument1.Load(Application.StartupPath + "\\CrystalReport1.rpt");
            this.reportDocument1.SetDataSource(ds.Tables["sumhz"]);
            crystalReportViewer1.ReportSource = reportDocument1;
            crystalReportViewer1.RefreshReport();
请问这代码是不是有问题? 我怎样都不能更改Text12的文本值

解决方案 »

  1.   

    reportDocument1DataDefinition.FormulaFields.Item("Text12").Text = "'" & strValue & "'"
      

  2.   

    reportDocument1DataDefinition.FormulaFields.Item("Text12").Text = "'" & strValue & "'"
    这个FormulaFields是什么意思。我用的是C#没有ITEM这个属性。
    如果我换成这样
    reportDocument1DataDefinition.FormulaFields["Text12"].Text = "dsssdfsdfsdf"
    会出错提示“{"无效索引。 (异常来自 HRESULT:0x8002000B (DISP_E_BADINDEX))"}”
    是什么意思!
      

  3.   

    FormulaFields是指报表的公式字段集合。
    你需要在CR中建一个公式字段,然后在放在CR上,这个字段就可被使用了
      

  4.   

    但是我用   reportDocument1.DataDefinition.FormulaFields["bt1"].Text = "dsssdfsdfsdf";
    这段代码,提示“{"无效索引。 (异常来自 HRESULT:0x8002000B (DISP_E_BADINDEX))"}”
    这是出现了什么问题
      

  5.   

    CrystalReport1 rpt = new CrystalReport1();            
                TextObject gettext = rpt.ReportDefinition.ReportObjects["Text12"] as extObject;
               
                gettext.Text = "sfsfsfsdfdsfsd";
    这段代码是没问题的
      

  6.   

    如果这段代码没有问题,为什么Text12没有显示值呢?
      

  7.   

    TextObject gettext = rpt.ReportDefinition.ReportObjects["Text12"] as TextObject
    把rpt.ReportDefinition.ReportObjects 改成rpt.Section1.ReportObjects看看,应该可以的