function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion

How to get all selected records from enhancedlist view ?

I have exactly the same issue as in MD Chen post on ideas. How do you get selected records from a enhancedList? Here is the code:




<apex:page standardController="ProfileHierarchy__c" recordSetvar="profiles" extensions="testController">
  <apex:enhancedlist type="ProfileHierarchy__c" height="200" rerender="c1,c2" />
  <apex:outputText id="c1" value="c1={!c1}" /> <br>
  <apex:outputText id="c2" value="c2={!c2}" /> <br>



public class testController {

  public testController (ApexPages.StandardSetController controller){

  public ApexPages.StandardSetController li{get;set;}

  public Integer getC1(){
    return ((List<ProfileHierarchy__c>)li.getRecords()).size();

  public Integer getC2(){
    return ((List<ProfileHierarchy__c>)li.getSelected()).size();

Thank you.





I omitted to mention that the code below always returns 0 for selected records when calling the .getSelected() method. I appreciate any advice that would solve this problem. Thanks.


This is a the same as this post

Does anyone know the answer to this question?


Did anyone here find a solution to this?


This idea might help if it were implemented:


You can get all of the selected records on an enhancedList (regardless of pagination or number or records on the current page) on a visual force page with javascript.

You'll need to find the ID of the 'ListViewport' eg j_id0:j_id4


var list_view_port = ListViewport.instances['<your ListViewport's id']>

var selected_records = list_view_port.grid.selModel.selections.keys


(keys will be a list of the id of the records.  You can also get 'data' instead of keys (as well as other options) which will have more info about the selected records.)


Here is what I ended up doing. Create a list view button:


try {
	if (getRecordIds && testFunc) {
		var ids = {!GETRECORDIDS($ObjectType.Contact)};
		if (!ids || ids.length < 1)
			alert('Please select at least one record.');
} catch(ex) {
	alert('This button can only be used from [location].');


Include a JavaScript function and actionFunction in your Visualforce page:

function testFunc(ids) {


<apex:actionFunction name="run" action="{!run}" status="runStatus" rerender="pageMsgs">
	<apex:param value="" assignTo="{!selectedContacts}" name="selContacts" />


And finally an Apex member and method:

public string selectedContacts { get; set; }

public PageReference run() {
//DO STUFF WITH selectedContacts.split(',')


Hope this helps others!