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.