internal string GetFormattedString(RowField field)
        {
            object internalValue = _internalData[field];

            if (internalValue == null)
            {
                return(string.Empty);
            }

            if (internalValue is string && string.IsNullOrEmpty((string)internalValue))
            {
                return(string.Empty);
            }


            if (field.DataType == typeof(bool) || field.DataType == typeof(bool?))
            {
                if (field.Report.RenderHints.BooleansAsYesNo)
                {
                    return(internalValue as bool? == true ? "Yes" : "No");
                }
            }

            if (field.FormatAsDelegate != null)
            {
                return((string)field.FormatAsDelegate.DynamicInvoke(internalValue));
            }

            return(string.Format(field.DataFormatString, internalValue));
        }
示例#2
0
        private void AddFieldTotal <T>(RowField field, Nullable <T> value) where T : struct
        {
            var numericValue = value != null ? value.Value : default(T);

            if (_totals.ContainsKey(field))
            {
                Func <T, T, T> lambda;
                if (!_lambdas.ContainsKey(typeof(T)))
                {
                    var firstParam  = Expression.Parameter(typeof(T), "x");
                    var secondParam = Expression.Parameter(typeof(T), "y");
                    lambda = Expression.Lambda <Func <T, T, T> >(Expression.Convert(Expression.Add(firstParam, secondParam), typeof(T)), firstParam, secondParam).Compile();
                    _lambdas.Add(typeof(T), lambda);
                }
                else
                {
                    lambda = (Func <T, T, T>)_lambdas[typeof(T)];
                }

                var    currentValue = (T)_totals[field];
                object result       = (object)lambda(currentValue, numericValue);
                _totals[field] = result;
            }
            else
            {
                _totals[field] = numericValue;
            }
        }
 public object this[RowField field]
 {
     get
     {
         return(_internalData[field]);
     }
     set
     {
         //if (value != null)
         //{
         //    field.DataType = value.GetType();
         _internalData[field] = value;
         //}
     }
 }
        internal string GetUrlString(RowField field)
        {
            object dataItem = field.Row.DataItem;

            if (dataItem == null)
            {
                return(null);
            }

            if (field.UrlDelegate != null)
            {
                return((string)field.UrlDelegate.DynamicInvoke(dataItem));
            }

            return(null);
        }