Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more

Search within the drop down in edit mode.

Vote:
 

How can I create a selection factory with seach option in cms edit view

#312684
Nov 17, 2023 5:36
Vote:
 

Can you provide bit more detail on what you are trying to achieve ? Maybe some screenshots / diagrams so we can better understand 

#312691
Nov 17, 2023 10:57
Vote:
 

Vaibhav,

It sounds like you want to implement an Auto Suggestion property within the CMS editor interface, have you tried following this documentation:

https://docs.developers.optimizely.com/content-management-system/docs/built-in-auto-suggestion-editor

#313164
Nov 27, 2023 10:20
Vote:
 

The below code has the same logic as Mark mentioned but I have created a searchable dropdown in one of my commerce projects so maybe that code will help.

[ServiceConfiguration(typeof(ISelectionQuery))]
 public class SearchOrganizatonsSelectionQuery: ISelectionQuery
 {
     public ISelectItem GetItemByValue(string value)
     {    
	  var val = value.Replace("%20", " "); // if the name contains blank spaces e.g. 'searchable  dropdown' then replace the value else it will not be display as selected
	  return GetItemsInternal(val)?.FirstOrDefault();
     }

     public IEnumerable<ISelectItem> GetItems(string query)
     {
         return GetItemsInternal(query);
     }

     IEnumerable<ISelectItem> GetItemsInternal(string query)
     {
         return Task.Delay(500) //Provide buffer time to type the query completely else modify this code as per requirement
             .ContinueWith(task => Search(query))
             .Result;
     }

     IEnumerable<ISelectItem> Search(string query)
     {
        // Replace the below code as per your requirement 
         var filter = new FilterElement(OrganizationEntity.FieldName, FilterElementType.Contains, query?.Trim());
         var response = (ListResponse)BusinessManager.Execute(new ListRequest(OrganizationEntity.ClassName, new[] { filter }, null, null, 50));
         var orgList = response.EntityObjects?.OfType<Organization>()?           
             .OrderBy(x => x.Name)?
             .ToList();

         if (orgList  != null)
         {
             foreach (var org in orgList)
             {
                 yield return new SelectItem { Text = org.Name, Value = org.Name };
             }
         }

         yield return new SelectItem { Text = "", Value = "" };
     }
 }
#313171
Nov 27, 2023 14:40
Mark Stott - Nov 27, 2023 15:09
Upvoted for practical example :)
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.