You need to sign in to do that
Don't have an account?
SFDC Guest
lightning component search records based picklist value
Hi All. I have written a lightning component to search records based on input given.
Please let me know to how to search records based on picklist value selected like if new cases picklist value selected then cases with new status should be displayed, if closed cases picklistvalue selected then closed cases should be displayed. Please help. Thanks in advance.
js
controller
Please let me know to how to search records based on picklist value selected like if new cases picklist value selected then cases with new status should be displayed, if closed cases picklistvalue selected then closed cases should be displayed. Please help. Thanks in advance.
Controller: public class caseList1 { @AuraEnabled public static List<sObject> fetchData() { //Query and return list of Contacts List<SObject> objRecords = [SELECT Status, Subject from Case LIMIT 10]; return objRecords; } }
Lightning component: <aura:component implements="forceCommunity:availableForAllPageTypes" access="global" controller="caseList1"> <!-- attributes --> <aura:attribute name="data" type="Map"/> <aura:attribute name="filteredData" type="Map"/> <aura:attribute name="columns" type="List"/> <!-- handlers--> <aura:handler name="init" value="{!this }" action="{!c.init }"/> <span> <lightning:input onchange="{!c.searchTable}" type="search" label="Searh" variant="label-hidden" placeholder="Enter search term" aura:id="SearchBox"/> </span> <br/> <lightning:datatable columns="{!v.columns}" data="{!v.filteredData}" keyField="id" /> </aura:component>
js
({ init: function (cmp, event, helper) { cmp.set('v.columns', [ { label: 'Status', fieldName: 'Status', type: 'text' }, { label: 'Subject', fieldName: 'Subject', type: 'text' } ]); var action = cmp.get("c.fetchData"); action.setCallback(this, function(response){ var state = response.getState(); if (state === "SUCCESS") { cmp.set("v.data", response.getReturnValue()); cmp.set("v.filteredData", response.getReturnValue()); } }); $A.enqueueAction(action); }, searchTable : function(cmp,event,helper) { var allRecords = cmp.get("v.data"); var searchFilter = event.getSource().get("v.value").toUpperCase(); var tempArray = []; var i; for(i=0; i < allRecords.length; i++){ if((allRecords[i].Status && allRecords[i].Status.toUpperCase().indexOf(searchFilter) != -1) || (allRecords[i].Subject && allRecords[i].Subject.toUpperCase().indexOf(searchFilter) != -1 )) { tempArray.push(allRecords[i]); } } cmp.set("v.filteredData",tempArray); } })
controller
Apex:
Component:
Controller:
Helper:
CSS:
Application:
I hope it helps you.
All Answers
Greetings to you!
Please try the below code, I have tested in my org and it is working fine. Kindly modify the code as per your requirement.
Apex:
Component:
Controller:
CSS:
Application:
I hope it helps you.
Kindly let me know if it helps you and close your query by marking it as solved so that it can help others in the future. It will help to keep this community clean.
Thanks and Regards,
Khan Anas
Apex:
Component:
Controller:
Helper:
CSS:
Application:
I hope it helps you.
Thanks for helping.
Can you please let me know how to merge multiple all non closed status values and display as "Open". So if open status is selected then it should display all case records which status related to "New", "In Progress", "On Hold", etc ?