我在水晶报表中有很多相同的文本对象,我想用c#.net更改它们的文本这是我的代码:
TextObject textObj = (TextObject)MyReport.Sections[2].ReportObjects[3];
但我无法更改textObj
答案 0 :(得分:8)
我认为您不会引用文本对象的位置而不是它的名称。所以尝试类似的事情:
CrystalDecisions.CrystalReports.Engine.TextObject txtReportHeader;
txtReportHeader = MyReport.ReportDefinition.ReportObjects["txtHeader"] as TextObject;
txtReportHeader.Text = "My Text";
“txtHeader”将是报告中文本对象的名称。
编辑:您可以在运行时更改文本的值。您无需删除并创建新标签。我调整了代码以适用于我的一个报告,并将标签“locid”更改为“My Text”。见截图。这是代码:
using CrystalDecisions.ReportSource;
using CrystalDecisions.CrystalReports.Engine;
CrystalDecisions.CrystalReports.Engine.TextObject txtReportHeader;
txtReportHeader = CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["text3"] as TextObject;
txtReportHeader.Text = "My Text";
答案 1 :(得分:1)
运行时最佳和最简单的方法是在c#
中更改Crystal Report textObject值MyReport是你的crystalReport对象
(MyReport.ReportDefinition.ReportObjects["YorTextObjectName"] as TextObject).Text = "YorStringValue";
答案 2 :(得分:0)
TextObject txt;
txt = (TextObject)rd.ReportDefinition.ReportObjects["Text1"];
txt.Text = "Your Text";
答案 3 :(得分:-2)
文字对象的文字无法改变我的朋友。我认为最好的方法是创建另一个文本对象然后删除你的第一个文本对象,试试这个代码:
TextObject textObj = (TextObject)MyReport.Sections[2].ReportObjects[3];
string newString = "any thing which you want write as your text";
TextObject newTextObj = MyReport.Sections[2].AddTextObject(newString, textObj.Left, textObj.Top);
newTextObj.Height = textObj.Height;
newTextObj.Width = textObj.Width;
newTextObj.Font = textObj.Font;
MyReport.Sections[2].DeleteObject(textObj);