如何使用Salesforce在案例类型中实现完全搜索?

如何使用Salesforce在案例类型中实现完全搜索?,salesforce,apex-code,salesforce-lightning,Salesforce,Apex Code,Salesforce Lightning,我需要构建一个解决方案,在所有3个级别字段中的新案例类型数据对象上创建一个搜索字段,并根据选择进行填充 与SF Global Search类似,我希望在文本搜索字段中键入2-3个字符,它将在Level 1-3字段中查找匹配的文本,选中时,Level 1-3字段将填充 这是apex课程 public class PickListHandler { @AuraEnabled public static

我需要构建一个解决方案,在所有3个级别字段中的新案例类型数据对象上创建一个搜索字段,并根据选择进行填充

与SF Global Search类似,我希望在文本搜索字段中键入2-3个字符,它将在Level 1-3字段中查找匹配的文本,选中时,Level 1-3字段将填充

这是apex课程

                 public class PickListHandler {
                @AuraEnabled
                public static List<String> getLevel1(){
                List<String> tempLst1 = new List<String>();
                    for(AggregateResult  ar : [select Level_1__c,COUNT(id) from Case_Type_Data__c  group by Level_1__c])
                {
                    tempLst1.add(''+ar.get('Level_1__c'));
                }

                return tempLst1;
                  
                  
                } 
                
                @AuraEnabled
                public static List<String> getLevel2(string strName){
                List<String> tempLst2 = new List<String>();
                   for(AggregateResult  ar : [select Level_2__c,COUNT(id) from Case_Type_Data__c where Level_1__c=:strName  group by Level_2__c])
                {
                   tempLst2.add(''+ar.get('Level_2__c'));
                }

                return tempLst2;
                  
                } 
                
                @AuraEnabled
                public static List<String> getLevel3(string strName1,string strName2){
                 List<String> tempLst3 = new List<String>();
                  for(AggregateResult  ar : [select Level_3__c,COUNT(id) from Case_Type_Data__c  where Level_1__c=:strName1 and Level_2__c=:strName2 group by Level_3__c])
                {
                   tempLst3.add(''+ar.get('Level_3__c'));
                }

                return tempLst3;
                  
                  
                } 
                     
                 @AuraEnabled
                 public  static String  savecasetype(string level1,string level2,string level3,string id){
                 string strMsg='successfull';
                      try{
                 ERT_Case_Type__c obj=new ERT_Case_Type__c();
                 Obj.Case__c = id;
                 System.debug('CASE  = '+ Obj.Case__c); 
                 Obj.Level_1__c=level1;
                 System.debug('Level1  = '+ Obj.Level_1__c); 
                 Obj.Level_2__c=level2;
                 System.debug('Level2  = '+ Obj.Level_2__c); 
                 Obj.Level_3__c=level3;
                 System.debug('Level3  = '+ Obj.Level_3__c); 
                 Insert obj;
              
                 }
                 
                catch(Exception ex){
                        strMsg='error';
                    }
                 return strMsg;  
            }
                
                 
                
                

            }
            
            
公共类PickListHandler{
@可听的
公共静态列表getLevel1(){
List templast1=新列表();
对于(AggregateResult ar:[按级别1\u c从案例类型\u数据\u c组中选择级别1\u c、计数(id)])
{
模板1.add(“”+ar.get('Level_1__c'));
}
返回模板1;
} 
@可听的
公共静态列表getLevel2(字符串strName){
List templast2=新列表();
对于(AggregateResult ar:[从案例类型数据中选择级别2,计数(id)),其中级别1=:按级别2分组)
{
模板2.add(“”+ar.get('Level_2__c'));
}
返回模板2;
} 
@可听的
公共静态列表getLevel3(字符串strName1,字符串strName2){
List templast3=新列表();
对于(AggregateResult ar:[从案例类型\u数据\u c中选择级别\u 3\u c,计数(id),其中级别\u 1\u c=:strName 1和级别\u 2\u c=:strName 2按级别\u 3\u c分组])
{
模板3.add(“”+ar.get('Level_3__c'));
}
返回模板3;
} 
@可听的
公共静态字符串savecasetype(字符串级别1、字符串级别2、字符串级别3、字符串id){
字符串strMsg='successfull';
试一试{
ERT_Case_Type_c obj=新的ERT_Case_Type_c();
Obj.Case_uuc=id;
System.debug('CASE='+Obj.CASE\uuu c);
对象级别1\u\u c=级别1;
系统调试('Level1='+Obj.Level_1_c);
目标2级c=2级;
系统调试('Level2='+Obj.Level_2_c);
对象级别3级c=级别3;
系统调试('Level3='+Obj.Level_3_c);
插入obj;
}
捕获(例外情况除外){
strMsg='error';
}
返回strMsg;
}
}
这是picklisthandler组件

                <aura:component controller="PickListHandler" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" >
                    <!-- Actions-->
                    <aura:handler name="init" value="{!this}" action="{!c.doInit}" />
                    <!-- variable-->
                    <aura:attribute name="lstLevel1" type="String[]" />
                     <aura:attribute name="lstLevel2" type="String[]" />
                      <aura:attribute name="lstL3" type="String[]" />
                    <span> Level 1</span>
                    <ui:inputSelect aura:id="ddLevel1" change="{!c.getLvl1}">
                        <ui:inputSelectOption label="-Select-" value="true"/>        
                        <aura:iteration items="{!v.lstLevel1}" var="value">          
                            <ui:inputSelectOption label="{!value}" text="{!value}" />
                        </aura:iteration>
                    </ui:inputSelect>
                    <span>Level 2</span>
                    <ui:inputSelect aura:id="ddLevel2" change="{!c.getSelectedValue}">
                        <ui:inputSelectOption label="-Select-" value="true"/>        
                        <aura:iteration items="{!v.lstLevel2}" var="value">          
                            <ui:inputSelectOption label="{!value}" text="{!value}" />
                        </aura:iteration>
                    </ui:inputSelect>
                     <span>Level 3</span>
                    <ui:inputSelect aura:id="ddLevel3" >
                        <ui:inputSelectOption label="-Select-" value="true"/>        
                        <aura:iteration items="{!v.lstL3}" var="value">          
                            <ui:inputSelectOption label="{!value}" text="{!value}" />
                        </aura:iteration>
                    </ui:inputSelect>
                   <lightning:button variant="brand" label="Save" onclick="{!c.onConfirm}" />
                </aura:component>

一级
二级
三级
问候,,
Carolyn

您的要求很高,我们不会有您的自定义对象。这是旧代码。我会尽力帮点忙,但整个事情也需要你的努力。我们可以很容易地复制这些例子

我要作弊,用菲利普·厄齐尔的。 这意味着在阅读下面的内容之前,你必须在你的组织中保存类、和。这是一些准备工作,但经过了战斗考验:)

Apex类

public与共享类Stack64129038{
@AuraEnabled(可缓存=真)
公共静态列表搜索(字符串搜索项、列表选择项){
if(String.isBlank(searchTerm)| | searchTerm.length()<2){
返回null;
}
字符串t='%'+searchTerm+'%';//决定如何搜索,“以开始”、“包括”或什么
列表记录=[选择Id、名称、级别1、级别2、级别3
来自案例\类型\数据\ c
式中,1级c类:t或2级c类:t或3级c类:t
按级别1、级别2、级别3排序
上限20];
/*你也可以用SOSL做实验?
记录=[在所有字段中查找:('*'+searchTerm+'*')
返回案例类型数据(Id、名称、级别1、级别2、级别3、级别c)][0];
*/
列表结果=新列表();
用于(案例类型数据ctd:记录){
结果.添加(新查找搜索结果(ctd.Id,'Case\u Type\u Data\u c','standard:Case\u wrap\u up',ctd.Name,
join(新列表{ctd.Level_1_c,ctd.Level_2_c,ctd.Level_3_c},';'))
));
}
返回结果;
} 
}
光环组件(html部分)


光环组件-JS控制器部分

({
lookupSearch:函数(组件、事件、帮助器){
//获取触发搜索事件的查找组件
const lookupComponent=event.getSource();
const serverSearchAction=component.get('c.search');
查找组件.search(serverSearchAction);
},
使用选择器