More in this section

Forums / Developing with Sitefinity / Filter By Multiple Categories

Filter By Multiple Categories

2 posts, 0 answered
  1. Mark
    Mark avatar
    147 posts
    Registered:
    01 Jun 2010
    01 Jun 2012
    Link to this post
    I'm developing a search control with a few checkbox lists of taxons. I'd like to be able to put the results of the checkbox lists into a list of Guids and then find module builder items that have matching taxons. I cannot figure out how to filter a taxon list within a module builder item with the list of taxon guids I have. Any help?

    public void Submit(object sender, EventArgs e)
            {
                List<Guid> CategoriesChecked = new List<Guid>();
                foreach (ListItem tag in MentorshipCategoriesList.Items)
                    if (tag.Selected) CategoriesChecked.Add(new Guid(tag.Value));
     
                List<Guid> IndustriesChecked = new List<Guid>();
                foreach (ListItem tag in MentorshipIndustriesList.Items)
                    if (tag.Selected) IndustriesChecked.Add(new Guid(tag.Value));
     
                List<Guid> BusinessStagesChecked = new List<Guid>();
                foreach (ListItem tag in MentorshipBusinessStagesList.Items)
                    if (tag.Selected) BusinessStagesChecked.Add(new Guid(tag.Value));
     
                bool PreviousExperience = MentorshipExperience.Checked;
     
                FindMentors(CategoriesChecked, IndustriesChecked, BusinessStagesChecked, PreviousExperience);
            }
     
            protected void FindMentors(List<Guid> CategoriesChecked, List<Guid> IndustriesChecked, List<Guid> BusinessStagesChecked, bool PreviousExperience)
            {
                DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();
                Type mentorType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.Mentors.Mentor");
     
                var mentors = (dynamicModuleManager.GetDataItems(mentorType))
                    .Where(i => i.GetValue<IList<Guid>>("mentorshipcategories").IM_LOST_HERE
                        && i.Visible == true);
            }
  2. Mark
    Mark avatar
    147 posts
    Registered:
    01 Jun 2010
    04 Jun 2012
    Link to this post
    If anyone else runs into this, we ended up using:

    var mentors = (dynamicModuleManager.GetDataItems(mentorType)).Where(i => i.Visible == true &&
                    i.Status == ContentLifecycleStatus.Live &&
                    (i.GetValue<IList<Guid>>("mentorshipcategories").Any(j => CategoriesChecked.Contains(j)) ||
                    i.GetValue<IList<Guid>>("industries").Any(j => CategoriesChecked.Contains(j)) ||
                    i.GetValue<IList<Guid>>("businessstages").Any(j => CategoriesChecked.Contains(j))));

2 posts, 0 answered