diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseTextItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseTextItem.cs
index 8b0dc34e53..ce13240666 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseTextItem.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseTextItem.cs
@@ -41,6 +41,7 @@ namespace ICSharpCode.Reports.Core
TextStyleDecorator st = this.CreateItemStyle();
ExportText item = new ExportText(st,false);
item.Text = this.text;
+ item.Expression = this.Expression;
return item;
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
index fe4b27560e..1f1659b4d1 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
@@ -303,33 +303,20 @@ foreach (var element in section.Items)
private static void EvaluateRecursive (IExpressionEvaluatorFacade evaluatorFassade,ExporterCollection items)
{
- foreach (BaseExportColumn be in items) {
+ foreach (BaseExportColumn exportColumn in items) {
- IExportContainer ec = be as IExportContainer;
+ IExportContainer ec = exportColumn as IExportContainer;
if (ec != null)
{
if (ec.Items.Count > 0) {
EvaluateRecursive(evaluatorFassade,ec.Items);
}
}
- /*
- IReportExpression expr = be as IReportExpression;
- if (expr != null)
- {
- if (EvaluationHelper.CanEvaluate(expr.Text)) {
- expr.Text = evaluatorFassade.Evaluate(expr.Text);
- }
- }
- */
-
- ExportText et = be as ExportText;
-
- if ((et != null) && (!String.IsNullOrEmpty(et.Text))) {
- if (EvaluationHelper.CanEvaluate(et.Text)) {
- et.Text = evaluatorFassade.Evaluate(et.Text);
- }
+
+ IReportExpression expressionItem = exportColumn as IReportExpression;
+ if (expressionItem != null) {
+ EvaluationHelper.EvaluateItem(evaluatorFassade,expressionItem);
}
-
}
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/TextStyleDecorator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/TextStyleDecorator.cs
index 201a0b76e2..c35692b557 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/TextStyleDecorator.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/TextStyleDecorator.cs
@@ -12,7 +12,6 @@ namespace ICSharpCode.Reports.Core.Exporter
public class TextStyleDecorator:BaseStyleDecorator
{
private Font font;
-
private StringFormat stringFormat;
private StringTrimming stringTrimming;
private ContentAlignment contentAlignment;
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs
index 64d23a0115..4671d8ed16 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs
@@ -12,14 +12,11 @@ namespace ICSharpCode.Reports.Core.Exporter {
///
/// Description of LineItem.
///
- public class ExportText :BaseExportColumn{
-
- private string text;
+ public class ExportText :BaseExportColumn,IReportExpression
+ {
#region Constructors
-
-
public ExportText (BaseStyleDecorator itemStyle,bool isContainer):base(itemStyle,isContainer)
{
}
@@ -51,10 +48,10 @@ namespace ICSharpCode.Reports.Core.Exporter {
iTextSharp.text.Rectangle r = base.ConvertToPdfRectangle();
columnText.SetSimpleColumn(r.Left, r.Top , r.Left + r.Width,r.Top - r.Height,pdfFormat.Leading,pdfFormat.Alignment);
- string formatedText = this.text;
+ string formatedText = this.Text;
if (!String.IsNullOrEmpty(StyleDecorator.FormatString)) {
- formatedText = StandardFormatter.FormatOutput(this.text,this.StyleDecorator.FormatString,
+ formatedText = StandardFormatter.FormatOutput(this.Text,this.StyleDecorator.FormatString,
this.StyleDecorator.DataType,String.Empty);
}
@@ -95,22 +92,15 @@ namespace ICSharpCode.Reports.Core.Exporter {
base.DrawItem(graphics);
base.Decorate(graphics);
- TextDrawer.DrawString(graphics, this.text,this.StyleDecorator);
+ TextDrawer.DrawString(graphics, this.Text,this.StyleDecorator);
}
#endregion
- public string Text
- {
- get {
- return text;
- }
- set {
- text = value;
- }
- }
+ public string Text {get;set;}
+ public string Expression {get;set;}
public new TextStyleDecorator StyleDecorator
{
@@ -125,7 +115,7 @@ namespace ICSharpCode.Reports.Core.Exporter {
public override string ToString()
{
- return this.text;
+ return this.Text;
}
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs
index 51f7cac238..b6541bb9a7 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/EvaluationHelper.cs
@@ -10,6 +10,7 @@ using System;
using ICSharpCode.Reports.Core;
using ICSharpCode.Reports.Core.Exporter;
using ICSharpCode.Reports.Core.Interfaces;
+using SimpleExpressionEvaluator;
namespace ICSharpCode.Reports.Expressions.ReportingLanguage
{
@@ -28,14 +29,14 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
public static IExpressionEvaluatorFacade CreateEvaluator (ISinglePage singlePage,IDataNavigator dataNavigator)
{
if (singlePage == null) {
-
+
throw new ArgumentNullException("singlePage");
}
- /*
+ /*
if (dataNavigator == null) {
throw new ArgumentNullException("dataNavigator");
}
- * */
+ * */
singlePage.IDataNavigator = dataNavigator;
IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade(singlePage);
return evaluatorFacade;
@@ -49,12 +50,28 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
if (container != null) {
EvaluateReportItems(evaluator,container.Items);
}
- BaseTextItem textItem = column as BaseTextItem;
- if (textItem != null) {
- textItem.Text = evaluator.Evaluate(textItem.Text);
+
+ IReportExpression expressionItem = column as IReportExpression;
+ if (expressionItem != null) {
+ EvaluateItem(evaluator,expressionItem);
}
}
}
+
+ public static void EvaluateItem( IExpressionEvaluatorFacade evaluator,IReportExpression expressionItem)
+ {
+ string expr = String.Empty;
+ if (expressionItem != null)
+ {
+ if (!String.IsNullOrEmpty(expressionItem.Expression)) {
+ expr = expressionItem.Expression;
+ } else {
+ expr = expressionItem.Text;
+ }
+ }
+
+ expressionItem.Text = evaluator.Evaluate(expr);
+ }
public static void EvaluateRow(IExpressionEvaluatorFacade evaluator,ExporterCollection row)
@@ -64,17 +81,17 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
if (container != null) {
EvaluateRow(evaluator,container.Items);
}
- ExportText textItem = column as ExportText;
- if (textItem != null) {
- textItem.Text = evaluator.Evaluate(textItem.Text);
+ IReportExpression expressionItem = column as IReportExpression;
+ if (expressionItem != null) {
+ EvaluateItem(evaluator,expressionItem);
}
}
}
- public static bool CanEvaluate (string expressionn)
+ public static bool CanEvaluate (string expression)
{
- if ((!String.IsNullOrEmpty(expressionn)) && (expressionn.StartsWith("=",StringComparison.InvariantCultureIgnoreCase))) {
+ if ((!String.IsNullOrEmpty(expression)) && (expression.StartsWith("=",StringComparison.InvariantCultureIgnoreCase))) {
return true;
}
return false;
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs
index fd2fe5fb68..209affd732 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/ExpressionEvaluatorFacade.cs
@@ -34,12 +34,8 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
{
try {
if (EvaluationHelper.CanEvaluate(expression)) {
- IExpression compiled = compiler.CompileExpression(expression);
-
this.context.ContextObject = this.SinglePage;
- if (compiled != null) {
- return (compiled.Evaluate(context)).ToString();
- }
+ return EvaluateExpression(expression);
}
} catch (Exception e) {
expression = e.Message;
@@ -49,24 +45,13 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
return expression;
}
- static void WriteLogMessage(Exception e)
- {
- Console.WriteLine("");
- Console.WriteLine("ExpressionEvaluatorFacade.Evaluate");
- Console.WriteLine(e.Message);
- Console.WriteLine("");
- }
public string Evaluate (string expression, object row)
{
try {
if (EvaluationHelper.CanEvaluate(expression)) {
- IExpression compiled = compiler.CompileExpression(expression);
-
- this.context.ContextObject =row;
- if (compiled != null) {
- return (compiled.Evaluate(context)).ToString();
- }
+ this.context.ContextObject = row;
+ return EvaluateExpression (expression);
}
} catch (Exception e) {
expression = e.Message;
@@ -77,6 +62,25 @@ namespace ICSharpCode.Reports.Expressions.ReportingLanguage
}
+ string EvaluateExpression(string expression)
+ {
+ IExpression compiled = compiler.CompileExpression(expression);
+ if (compiled != null) {
+ return (compiled.Evaluate(context)).ToString();
+ }
+ return expression;
+ }
+
+
+ static void WriteLogMessage(Exception e)
+ {
+ Console.WriteLine("");
+ Console.WriteLine("ExpressionEvaluatorFacade.Evaluate");
+ Console.WriteLine(e.Message);
+ Console.WriteLine("");
+ }
+
+
private void FunctionStore (object sender,SimpleExpressionEvaluator.Evaluation.UnknownFunctionEventArgs e)
{