You need to sign in to do that
Don't have an account?

How to sort manager field in both ascending and descending order in apex class?
component -
<th class="slds-is-sortable slds-text-title--caps" scope="col" onclick="{!c.sortName}"><div class="slds-truncate slds-cell-fixed" style="width: 980px;padding-left: 10px;padding-top: 10px;" title="Manager">Manager
<aura:if isTrue="{! and(v.arrowDirection == 'arrowdown', v.selectedTabsoft == 'Manager') }"> ▼ </aura:if>
<aura:if isTrue="{! and(v.arrowDirection != 'arrowdown', v.selectedTabsoft == 'Manager') }"> ▲ </aura:if>
</div></th>
controller.js
sortName: function(component, event, helper) {
// set current selected header field on selectedTabsoft attribute.
component.set("v.selectedTabsoft", 'Manager');
// call the helper function with pass sortField Name
helper.sortHelper(component, event, 'Manager');
},
Helper.js
doinitHelper: function(component,event,QueueId){
var action = component.get("c.fetchsearchuser");
action.setParams({
'SearchUserKeyword': ''
});
component.find("Id_spinner").set("v.class" , 'slds-show');
// Tab Name
var workspaceAPI = component.find("workspace");
var TabName = component.get("v.TabName");
workspaceAPI.getEnclosingTabId().then(function(tabId) {
var focusedTabId = tabId;
workspaceAPI.setTabLabel({
tabId: focusedTabId,
label: TabName
});
workspaceAPI.setTabIcon({
tabId: focusedTabId,
icon: "standard:user",
});
})
action.setCallback(this, function(response) {
var state = response.getState();
if (state === "SUCCESS") {
component.find("Id_spinner").set("v.class" , 'slds-hide');
var storeResponse = response.getReturnValue();
console.log('User Load on Queue click'+storeResponse);
// set searchResult list with return value from server.
component.set("v.UserResult", storeResponse);
//for(var i= 0; i<storeResponse.length; i++ )
//alert(storeResponse[i].Role);
component.set("v.ShowUserTable", true);
}
});
$A.enqueueAction(action);
},
sortHelper: function(component, event, sortFieldName) {
var action = component.get("c.fetchname");
action.setParams({
'sortField': ''
});
var currentDir = component.get("v.arrowDirection");
if (currentDir == 'arrowdown') {
// set the arrowDirection attribute for conditionally rendred arrow sign
component.set("v.arrowDirection", 'arrowup');
// set the isAsc flag to true for sort in Assending order.
component.set("v.isAsc", true);
} else {
component.set("v.arrowDirection", 'arrowdown');
component.set("v.isAsc", false);
}
// call the onLoad function for call server side method with pass sortFieldName
this.doinitHelper(component, event, sortFieldName);
},
apex class-
@AuraEnabled
public static list < User > fetchname(String sortField, boolean isAsc) {
String sSoql = 'SELECT Manager.name';
sSoql += 'From User';
system.debug('sortField-->' + sortField);
if (sortField != '') {
sSoql += ' order by ' + sortField;
// if isAsc is equal tp ture then set 'asc' order otherwise set 'desc' order.
if (isAsc) {
sSoql += ' asc';
} else {
sSoql += ' desc';
}
}
// set record limit to query
sSoql += ' LIMIT 20';
System.debug('@Developer -->sSoql:' + sSoql);
list <User> lstResult;
try {
system.debug('The query is' + sSoql);
lstResult = Database.query(sSoql);
List < User > returnConList = new List < User > ();
for (User c: lstResult) {
returnConList.add(c);
}
return returnConList;
}
catch (Exception ex) {
// for handle Exception
return null;
}
}
<th class="slds-is-sortable slds-text-title--caps" scope="col" onclick="{!c.sortName}"><div class="slds-truncate slds-cell-fixed" style="width: 980px;padding-left: 10px;padding-top: 10px;" title="Manager">Manager
<aura:if isTrue="{! and(v.arrowDirection == 'arrowdown', v.selectedTabsoft == 'Manager') }"> ▼ </aura:if>
<aura:if isTrue="{! and(v.arrowDirection != 'arrowdown', v.selectedTabsoft == 'Manager') }"> ▲ </aura:if>
</div></th>
controller.js
sortName: function(component, event, helper) {
// set current selected header field on selectedTabsoft attribute.
component.set("v.selectedTabsoft", 'Manager');
// call the helper function with pass sortField Name
helper.sortHelper(component, event, 'Manager');
},
Helper.js
doinitHelper: function(component,event,QueueId){
var action = component.get("c.fetchsearchuser");
action.setParams({
'SearchUserKeyword': ''
});
component.find("Id_spinner").set("v.class" , 'slds-show');
// Tab Name
var workspaceAPI = component.find("workspace");
var TabName = component.get("v.TabName");
workspaceAPI.getEnclosingTabId().then(function(tabId) {
var focusedTabId = tabId;
workspaceAPI.setTabLabel({
tabId: focusedTabId,
label: TabName
});
workspaceAPI.setTabIcon({
tabId: focusedTabId,
icon: "standard:user",
});
})
action.setCallback(this, function(response) {
var state = response.getState();
if (state === "SUCCESS") {
component.find("Id_spinner").set("v.class" , 'slds-hide');
var storeResponse = response.getReturnValue();
console.log('User Load on Queue click'+storeResponse);
// set searchResult list with return value from server.
component.set("v.UserResult", storeResponse);
//for(var i= 0; i<storeResponse.length; i++ )
//alert(storeResponse[i].Role);
component.set("v.ShowUserTable", true);
}
});
$A.enqueueAction(action);
},
sortHelper: function(component, event, sortFieldName) {
var action = component.get("c.fetchname");
action.setParams({
'sortField': ''
});
var currentDir = component.get("v.arrowDirection");
if (currentDir == 'arrowdown') {
// set the arrowDirection attribute for conditionally rendred arrow sign
component.set("v.arrowDirection", 'arrowup');
// set the isAsc flag to true for sort in Assending order.
component.set("v.isAsc", true);
} else {
component.set("v.arrowDirection", 'arrowdown');
component.set("v.isAsc", false);
}
// call the onLoad function for call server side method with pass sortFieldName
this.doinitHelper(component, event, sortFieldName);
},
apex class-
@AuraEnabled
public static list < User > fetchname(String sortField, boolean isAsc) {
String sSoql = 'SELECT Manager.name';
sSoql += 'From User';
system.debug('sortField-->' + sortField);
if (sortField != '') {
sSoql += ' order by ' + sortField;
// if isAsc is equal tp ture then set 'asc' order otherwise set 'desc' order.
if (isAsc) {
sSoql += ' asc';
} else {
sSoql += ' desc';
}
}
// set record limit to query
sSoql += ' LIMIT 20';
System.debug('@Developer -->sSoql:' + sSoql);
list <User> lstResult;
try {
system.debug('The query is' + sSoql);
lstResult = Database.query(sSoql);
List < User > returnConList = new List < User > ();
for (User c: lstResult) {
returnConList.add(c);
}
return returnConList;
}
catch (Exception ex) {
// for handle Exception
return null;
}
}
You are not setting the field for which you wish to sort in the server call?
action.setParams({
'sortField': ''
});
And just a suggestion you can sort the List in JS as well.This would reduce server hit count.
Cheers!!!!