如何使用Salesforce在案例类型中实现完全搜索?
我需要构建一个解决方案,在所有3个级别字段中的新案例类型数据对象上创建一个搜索字段,并根据选择进行填充 与SF Global Search类似,我希望在文本搜索字段中键入2-3个字符,它将在Level 1-3字段中查找匹配的文本,选中时,Level 1-3字段将填充 这是apex课程如何使用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
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);
},
使用选择器