Beispiel #1
0
        /// <summary>
        /// Tokenizes calculated fieldXml to use tokens for field references
        /// </summary>
        /// <param name="fields">the field collection that the field is contained within</param>
        /// <param name="field">the field to tokenize</param>
        /// <param name="fieldXml">the xml to tokenize</param>
        /// <returns></returns>
        internal static string TokenizeFieldFormula(Microsoft.SharePoint.Client.FieldCollection fields, FieldCalculated field, string fieldXml)
        {
            var schemaElement = XElement.Parse(fieldXml);

            var formulaElement = schemaElement.Descendants("Formula").FirstOrDefault();

            if (formulaElement != null)
            {
                field.EnsureProperty(f => f.Formula);

                var formulastring = field.Formula;

                if (formulastring != null)
                {
                    var fieldRefs = schemaElement.Descendants("FieldRef");
                    foreach (var fieldRef in fieldRefs)
                    {
                        var fieldInternalName = fieldRef.Attribute("Name").Value;
                        var referencedField   = fields.GetFieldByInternalName(fieldInternalName);
                        formulastring = formulastring.Replace($"[{referencedField.Title}]", $"[{{fieldtitle:{fieldInternalName}}}]");
                    }
                    var fieldRefParent = schemaElement.Descendants("FieldRefs");
                    fieldRefParent.Remove();

                    formulaElement.Value = formulastring;
                }
            }
            return(schemaElement.ToString());
        }
        /// <summary>
        /// Tokenizes calculated fieldXml to use tokens for field references
        /// </summary>
        /// <param name="fields">the field collection that the field is contained within</param>
        /// <param name="field">the field to tokenize</param>
        /// <param name="fieldXml">the xml to tokenize</param>
        /// <returns></returns>
        internal static string TokenizeFieldFormula(Microsoft.SharePoint.Client.FieldCollection fields, FieldCalculated field, string fieldXml)
        {
            var schemaElement = XElement.Parse(fieldXml);

            var formulaElement = schemaElement.Descendants("Formula").FirstOrDefault();

            if (formulaElement != null)
            {
                field.EnsureProperty(f => f.Formula);

                var formulastring = field.Formula;

                if (formulastring != null)
                {
                    var fieldRefs = schemaElement.Descendants("FieldRef");
                    foreach (var fieldRef in fieldRefs)
                    {
                        var fieldInternalName = fieldRef.Attribute("Name").Value;
                        var referencedField = fields.GetFieldByInternalName(fieldInternalName);
                        formulastring = formulastring.Replace(string.Format("[{0}]", referencedField.Title), string.Format("[{{fieldtitle:{0}}}]", fieldInternalName));
                    }
                    var fieldRefParent = schemaElement.Descendants("FieldRefs");
                    fieldRefParent.Remove();

                    formulaElement.Value = formulastring;
                }
            }
            return schemaElement.ToString();
        }