コード例 #1
0
        private void PersistSelectedFields(SPWeb web, string reportId, ReportFilterSelection fieldSelection, SPList list)
        {
            var userSettings = GetPersistedSettings(web, reportId);

            userSettings.FieldSelection = fieldSelection;
            userSettings.SiteId         = web.Site.ID;
            userSettings.UserId         = web.CurrentUser.ID.ToString();
            userSettings.WebId          = web.ID;
            userSettings.ListId         = list.ID;
            userSettings.WebPartId      = WebPartHelper.ConvertWebPartIdToGuid(reportId);

            PersistUserSettings(userSettings, web);
        }
コード例 #2
0
        private static string GetFilterForUser(ReportFilterSelection fieldSelection, bool applyNonArchivedFilter)
        {
            var returnQuery = new StringBuilder();

            returnQuery.AppendFormat("<Where><In><FieldRef Name='{0}' /><Values>", fieldSelection.InternalFieldName);

            foreach (var selectedField in fieldSelection.SelectedFields)
            {
                returnQuery.AppendFormat("<Value Type='UserMulti'>{0}</Value>", selectedField);
            }

            returnQuery.Append("</Values></In></Where>");
            return(applyNonArchivedFilter ? AppendNonArchivedFilter(returnQuery.ToString()) : returnQuery.ToString());
        }
コード例 #3
0
        private static string GetFilterForSingleSelect(ReportFilterSelection fieldSelection, bool applyNonArchivedFilter)
        {
            if (string.IsNullOrEmpty(fieldSelection.CamlComparisonOperator.Operator))
            {
                return(string.Empty);
            }

            var returnQuery = new StringBuilder();

            HandlePercentageFieldIfApplicable(fieldSelection);

            returnQuery.AppendFormat("<Where><{0}><FieldRef Name='{1}' /><Value Type='{3}'>{2}</Value></{0}></Where>", fieldSelection.CamlComparisonOperator.Operator, fieldSelection.InternalFieldName, fieldSelection.SelectedFields[0], fieldSelection.FieldType);

            return(applyNonArchivedFilter ? AppendNonArchivedFilter(returnQuery.ToString()) : returnQuery.ToString());
        }
コード例 #4
0
        private string GetJsonWithErrorMessage(ReportFilterSelection fieldSelection)
        {
            var jsonToReturn = new StringBuilder();

            jsonToReturn.Append("[");

            foreach (var errorMessage in fieldSelection.Errors)
            {
                var formattedFilteredTitle = errorMessage.Replace("\"", "\\\"");
                jsonToReturn.AppendFormat("{{\"error\":\"{0}\"}},", formattedFilteredTitle);
            }

            jsonToReturn.Append("]");

            return(jsonToReturn.ToString().Replace(",]", "]"));
        }
コード例 #5
0
        public static List <string> GetFilteredTitles(SPWeb web, ReportFilterSelection fieldSelection)
        {
            var list = web.Lists[fieldSelection.ListToFilterOn];
            var applyNonArchivedFilter = list.Fields.ContainsField(ProjectArchiverService.ArchivedColumn);

            var query = new SPQuery {
                Query = ReportFilterQueryService.GetQueryForFiltering(fieldSelection, applyNonArchivedFilter)
            };

            if (fieldSelection.HasErrors)
            {
                return(null);
            }

            return(IsRollup(list) ? GetFilteredTitlesForRollup(web, list, query.Query) : GetFilteredTitlesForSubWeb(list, query));
        }
コード例 #6
0
        private ReportFilterSelection GetFieldSelection(SPField field, SPWeb web)
        {
            var selectedFields = new List <string>();

            _selectedFields = CleanValueIfFromPeoplePicker(_selectedFields);
            selectedFields.PopulateFromCommaSeparatedString(_selectedFields);

            var returnValue = new ReportFilterSelection
            {
                InternalFieldName      = field.InternalName,
                FieldNameForDisplay    = field.Title,
                FieldType              = field.Type,
                ListToFilterOn         = web.Lists[_listName].ID,
                SelectedFields         = selectedFields,
                CamlComparisonOperator = CamlComparisonOperator.GetCamlOperatorByValue(_filterOperator)
            };

            return(returnValue);
        }
コード例 #7
0
        private static string GetFilterForDateTime(ReportFilterSelection fieldSelection, bool applyNonArchivedFilter)
        {
            var returnQuery = new StringBuilder();
            //2012-10-01T02:48:44Z

            var startDate = new DateTime();
            var startDateWasSuccessful = DateTime.TryParse(fieldSelection.SelectedFields[0], out startDate);

            var endDate = new DateTime();
            var endDateWasSuccessful = DateTime.TryParse(fieldSelection.SelectedFields[1], out endDate);

            if (startDateWasSuccessful && endDateWasSuccessful)
            {
                var startDateFormatted = string.Format("{0}-{1}-{2}T00:00:00Z", startDate.Year, startDate.Month, startDate.Day);
                var endDateFormatted   = string.Format("{0}-{1}-{2}T00:00:00Z", endDate.Year, endDate.Month, endDate.Day);
                returnQuery.AppendFormat("<Where><And><Geq><FieldRef Name='{0}' /><Value Type='DateTime'>{1}</Value></Geq><Leq><FieldRef Name='{0}' /><Value Type='DateTime'>{2}</Value></Leq></And></Where>", fieldSelection.InternalFieldName, startDateFormatted, endDateFormatted);
            }

            return(applyNonArchivedFilter ? AppendNonArchivedFilter(returnQuery.ToString()) : returnQuery.ToString());
        }
コード例 #8
0
        private static void HandlePercentageFieldIfApplicable(ReportFilterSelection fieldSelection)
        {
            if (!fieldSelection.IsPercentage)
            {
                return;
            }
            if (fieldSelection.SelectedFields.Count <= 0)
            {
                return;
            }

            decimal result;

            decimal.TryParse(fieldSelection.SelectedFields[0], out result);

            if (result != 0)
            {
                result = result / 100;
            }
            fieldSelection.SelectedFields[0] = result.ToString();
        }
コード例 #9
0
        public static string GetQueryForFiltering(ReportFilterSelection fieldSelection, bool applyNonArchivedFilter)
        {
            switch (fieldSelection.FieldType)
            {
            case SPFieldType.Choice:
            case SPFieldType.Lookup:
                return(GetFilterForMultiSelect(fieldSelection, applyNonArchivedFilter));

            case SPFieldType.Currency:
            case SPFieldType.Text:
            case SPFieldType.Number:
            case SPFieldType.Integer:
                return(GetFilterForSingleSelect(fieldSelection, applyNonArchivedFilter));

            case SPFieldType.DateTime:
                return(GetFilterForDateTime(fieldSelection, applyNonArchivedFilter));

            case SPFieldType.User:
                return(GetFilterForUser(fieldSelection, applyNonArchivedFilter));
            }

            return(string.Empty);
        }
コード例 #10
0
        private void PopulateDefaultValueListBox()
        {
            DefaultValueAsListBox.Items.Clear();

            var selectedSharepointListName = SharepointListDropDownList.SelectedValue;
            var selectedSharepointField    = SharepointListFieldDropDownList.SelectedValue;

            if (selectedSharepointField == DefaultFieldValue)
            {
                return;
            }
            if (selectedSharepointListName == DefaultListValue)
            {
                return;
            }

            var sharepointList = SPContext.Current.Web.Lists[selectedSharepointListName];
            var field          = sharepointList.Fields[selectedSharepointField];

            switch (field.Type)
            {
            case SPFieldType.Choice:
                DefaultValueAsListBox.Rows          = AllowMultipleFieldsSelectedDropDownCheckBox.Checked ? 6 : 1;
                DefaultValueAsListBox.SelectionMode = AllowMultipleFieldsSelectedDropDownCheckBox.Checked ? ListSelectionMode.Multiple : ListSelectionMode.Single;

                foreach (var choice in ((SPFieldChoice)field).Choices)
                {
                    DefaultValueAsListBox.Items.Add(choice);
                }

                break;

            case SPFieldType.Lookup:
                DefaultValueAsListBox.Rows          = AllowMultipleFieldsSelectedDropDownCheckBox.Checked ? 6 : 1;
                DefaultValueAsListBox.SelectionMode = AllowMultipleFieldsSelectedDropDownCheckBox.Checked ? ListSelectionMode.Multiple : ListSelectionMode.Single;

                var lookupField = (SPFieldLookup)field;

                if (string.IsNullOrEmpty(lookupField.LookupList))
                {
                    return;
                }
                var web        = SPContext.Current.Web;
                var lookUpWeb  = web.Site.AllWebs[lookupField.LookupWebId];
                var lookupList = lookUpWeb.Lists[new Guid(lookupField.LookupList)];

                var reportFilterSelection = new ReportFilterSelection
                {
                    IsLookUp            = true,
                    ListToFilterOn      = lookupList.ID,
                    InternalFieldName   = lookupField.InternalName,
                    FieldNameForDisplay = lookupField.Title,
                    LookupFieldType     = lookupList.Fields.GetFieldByInternalName(lookupField.LookupField).Type
                };

                var filteredTitles = QueryHelper.GetFilteredTitles(web, reportFilterSelection);


                if (filteredTitles == null || filteredTitles.Count <= 0)
                {
                    return;
                }

                filteredTitles.Sort(string.Compare);

                if (!reportFilterSelection.HasErrors)
                {
                    foreach (var title in filteredTitles)
                    {
                        DefaultValueAsListBox.Items.Add(title);
                    }
                }

                break;
            }
        }