Esempio n. 1
0
        public static bool ValidateItemProperty(SPListItem item, Guid fieldId, Criteria criteria, string itemValueString)
        {
            switch (item.Fields[fieldId].Type)
            {
                case SPFieldType.Boolean:
                    return Boolean.Parse(itemValueString).EnhancedCompareTo(criteria);
                case SPFieldType.User:
                    SPFieldUser userField = (SPFieldUser)item.Fields[fieldId];

                    SPPrincipal spPrincipal = item.ParentList.ParentWeb.Site.FindUserOrSiteGroup(itemValueString);
                    if (userField.AllowMultipleValues)
                    {
                        //SPFieldLookupValueCollection userValues = new SPFieldLookupValueCollection(itemValueString);
                        //return userValues.EnhancedCompareTo(criteria);
                        return false;
                    }
                    SPFieldLookupValue userValue = new SPFieldLookupValue(spPrincipal.ID, spPrincipal.Name);
                    return userValue.EnhancedCompareTo(criteria);

                case SPFieldType.Lookup:
                    SPFieldLookup lookupField = (SPFieldLookup)item.Fields[fieldId];

                    if (lookupField.AllowMultipleValues)
                    {
                        SPFieldLookupValueCollection itemValueCol = new SPFieldLookupValueCollection(itemValueString);
                        return itemValueCol.EnhancedCompareTo(criteria);
                    }
                    SPFieldLookupValue itemFieldValue = (SPFieldLookupValue)lookupField.GetFieldValue(itemValueString);
                    return itemFieldValue.EnhancedCompareTo(criteria);

                case SPFieldType.Computed:
                case SPFieldType.Note:
                case SPFieldType.Text:
                    return itemValueString.EnhancedCompareTo(criteria);

                case SPFieldType.Currency:
                case SPFieldType.Integer:
                case SPFieldType.Number:
                    long itemValue;
                    if (long.TryParse(itemValueString, out itemValue))
                    {
                        return itemValue.EnhancedCompareTo(criteria);
                    }
                    break;

                case SPFieldType.DateTime:
                    DateTime itemDateTimeValue;
                    if (DateTime.TryParse(itemValueString, out itemDateTimeValue))
                    {
                        return itemDateTimeValue.EnhancedCompareTo(criteria);
                    }
                    break;

                default:
                    return itemValueString.EnhancedCompareTo(criteria);

            }
            return false;
        }