Exemple #1
0
        public RdlcExpression GetParsedRdlcExpression(string rdlcExpressionText, string tablixDatasetName)
        {
            var rdlcExpression   = new RdlcExpression();
            var regex            = new Regex(RegexForFieldOnly + "|" + RegexForFieldWithDataset, RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
            var matches          = regex.Matches(rdlcExpressionText);
            var fieldDataStrings = new List <string>();

            foreach (Match match in matches)
            {
                if (!fieldDataStrings.Exists(s => s == match.Value))
                {
                    fieldDataStrings.Add(match.Value);
                }
            }

            rdlcExpression.ExpressionText    = rdlcExpressionText;
            rdlcExpression.FieldStrings      = fieldDataStrings;
            rdlcExpression.Fields            = MakeDataFields(fieldDataStrings, tablixDatasetName);
            rdlcExpression.SpacialAttributes = CheckSpecialAttributes(rdlcExpressionText);
            return(rdlcExpression);
        }
        string BuildLabelText(RdlcExpression rdlcExpression)
        {
            bool   hasIif    = rdlcExpression.SpacialAttributes.Exists(a => a == SpacialAttribute.Iif);
            bool   hasSwitch = rdlcExpression.SpacialAttributes.Exists(a => a == SpacialAttribute.Switch);
            string labelText = "";

            for (int i = 0; i < rdlcExpression.Fields.Count && i < _maxFieldsToConcate; i++)
            {
                var fieldText   = rdlcExpression.Fields[i].Field;
                var datasetName = rdlcExpression.Fields[i].Dataset;
                if (fieldText.Length == 0)
                {
                    continue;
                }
                if (i != 0)
                {
                    labelText += "_";
                }

                // shorten length
                if (_maxFieldLength > 0 && fieldText.Length > _maxFieldLength)
                {
                    fieldText = fieldText.Substring(0, _maxFieldLength);
                }

                if (datasetName.Equals("LookupTable"))
                {
                    labelText += fieldText.Substring(0, 1).ToUpper() + fieldText.Substring(1);
                }
                else
                {
                    labelText += fieldText.Substring(0, 1).ToLower() + fieldText.Substring(1);
                }
            }
            return(labelText);
        }