一个新手的简单问题 [英] A newbie's simple question
问题描述
您好,
我在空白报告中添加了两种类型的未绑定字段(字符串和数字),并尝试引用该字段的名称并更改其颜色。但是我收到了"无效的报告对象名称"。错误。这里有专家可以告诉我我错过了什么或我做错了什么吗?提前致谢!
[code]
使用System;
使用System.Collections;
使用System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web。 UI.WebControls;
.UI.Page {
protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;
protected BlankReport bRpt;
private void Page_Load(object sender,System.EventArgs e){
bRpt = new BlankReport();
//以下两行代码有效吗?bRpt.DataDefinition.FormulaFields [" strField"]。Text =" \" ; myStrField \"" ;;
bRpt.DataDefinition.FormulaFields [" numField"]。Text =" \" myNumField \"";
//以下两行代码抛出异常
//CrystalDecisions.CrystalReports.Engine.InvalidArgumentException:无效的报表对象名称。
Response.Write(bRpt.ReportDefinition.ReportObjects [" strField"] .Name +"< br>");
Response.Write(bRpt.ReportDefinition.ReportObjects [" numField"]。Name +"< br>");
//以下两行代码也抛出异常
//CrystalDecisions.CrystalReports.Engine.InvalidArgumentException:无效的报表对象名称。
((FieldObject)bRpt.ReportDefinition.ReportObjects [" strField"])。颜色= System.Drawing.Color.Red;
((FieldObject)bRpt.ReportDefinition.ReportObjects [" numField"])。Color = System.Drawing.Color.Blue;
CrystalReportViewer1.ReportSource = bRpt ;
}
#region Web窗体设计器生成的代码
覆盖保护的void OnInit(EventArgs e){
InitializeComponent();
base.OnInit(e);
} private void InitializeComponent(){
this.Load + = new System.EventHandler(this.Page_Load);
}
#endregion
}
}
[/ code]
基本Crystal Reports引擎不允许您在运行时添加对象。您需要使用已存在对象的模板报告,然后对其进行修改。使用RAS(报表应用程序服务器)引擎进行报表创建。只有完整版Crystal
报告包含RAS。
Don
Hi there,
I added two type of unbound fields (string and number) to a blank report and tried to reference the field's name and change their color. But I received the "invalid report object name" error. Can any expert here tell me what I am missing or what I have done wrong? Thanks in advance!
[code]
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CrystalDecisions.CrystalReports.Engine;
namespace CR_Test{
public class BlankReportForm : System.Web.UI.Page{
protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;
protected BlankReport bRpt;
private void Page_Load(object sender, System.EventArgs e){
bRpt = new BlankReport();
//The following two lines of code work
bRpt.DataDefinition.FormulaFields["strField"].Text = "\"myStrField\"";
bRpt.DataDefinition.FormulaFields["numField"].Text = "\"myNumField\"";
//the following two lines of code throw exception
//CrystalDecisions.CrystalReports.Engine.InvalidArgumentException: Invalid report object name.
Response.Write(bRpt.ReportDefinition.ReportObjects["strField"].Name + "<br>");
Response.Write(bRpt.ReportDefinition.ReportObjects["numField"].Name + "<br>");
//the following two lines of code also throw exception
//CrystalDecisions.CrystalReports.Engine.InvalidArgumentException: Invalid report object name.
((FieldObject)bRpt.ReportDefinition.ReportObjects["strField"]).Color = System.Drawing.Color.Red;
((FieldObject)bRpt.ReportDefinition.ReportObjects["numField"]).Color = System.Drawing.Color.Blue;
CrystalReportViewer1.ReportSource = bRpt;
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e){
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent(){
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
[/code]
Basic Crystal Reports engine will not allow you to add objects at runtime. You need to use a template report where the objects already exist and then modify them. Use RAS ( Report Application Server ) engine for report Creation. Only full versions of Crystal Reports include RAS.
Don
这篇关于一个新手的简单问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!