I'm new in Salesforce.
I've created a custom field (type text (10) ) in accounts.
I want to group accounts by text (level 1, level 2, level 3) and add drag and drop to move account in groups.
Thank you.
This is my code:
<apex:page controller="TheController" action="{!load}">
<apex:includeScript value="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"/>
<apex:includeScript value="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"/>
<apex:stylesheet value="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/smoothness/jquery-ui.css"/>
<script>
$(document).ready(function(){
implementSortable();
});
function implementSortable(){
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
}
</script>
<apex:repeat value="{!levels}" var="level">
<apex:pageBlock title="{!level}">
<ul id="sortable">
<apex:repeat value="{!accounts}" var="account">
<apex:outputPanel id="sortable" rendered="{!IF(level=account.level__c,true,false)}">
<li>{!account.Name} - {!account.level__c}<br/></li>
</apex:outputPanel>
</apex:repeat>
</ul>
</apex:pageBlock>
</apex:repeat>
public with sharing class TheController {
public List<Account> accounts {get;set;}
public String[] levels {get;set;}
public void load(){
accounts = [SELECT Id, Name, level__c FROM Account WHERE level__c IN ('level 1', 'level 2', 'level 3')];
Set<String> levelSet = new Set<String>();
for (Account a : accounts)
levelSet.add(a.level__c);
levels = new String[levelSet.size()];
Integer i = 0;
for (String level : levelSet){
levels[i] = level;
i++;
}
}
}
Update: I'm still stuck:
I tried this :
public with sharing class TheController {
public List<Account> accounts {get;set;}
Map<String, List<Account>> levelToAccountsMap = new Map <String, List<Account>>();
public void load(){
accounts = [Select Id, Name, level__c from Account];
for (Account a: accounts){
levelToAccountsMap.put(a.level__c, a.Name);
}
return levelToAccountsMap;
}
}
But I get "Incompatible value type String for Map>. level__c is a String.
I don't understand.
Best Answer
There are 2 things that you need to do
Map<String, List<Account>> levelToAccountsMap = new Map <String, List<Account>>();
In VF page use this code