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

Looking to save selected account records in list using "ONCOMPLETE" command in apex:commandbutton
Very straight forward listview table of account records - see apex:pageblocktable below
Within this account listview table, we have a checkbox field at the account object as shown in our listview. The user can check this box in the account listview apex:inputField value="{!a.Worked__c}" .
I need to save these checked Account Records when the user clicks on the apex:commandbutton to move as shown in the action="{!first}" or "{!previous}" call button selected.
I need to save the selected apex:inputField value="{!a.Worked__c}" / using the "ONCOMPLETE" attribute in the apex:commandbutton
EXAMPLE:
apex:commandbutton action="{!first}" value="First Group" ONCOMPLETE="{!xxSaveSelectedRecordsxx}" apex:commandbutton
Example ListView Table of Account Records:
apex:pageBlockTable id="AccountList" value="{!Accounts}" var="a"
apex:column value="{!a.Id}"/
apex:column value="{!a.Name}"/
apex:column headerValue="Worked?"> apex:inputField value="{!a.Worked__c}" / /apex:column>
apex:column value="{!a.Phone}"/> /apex:pageBlockTable>
Example Nav Buttons:
apex:commandbutton action="{!first}" value="First Group" /apex:commandbutton
apex:commandbutton action="{!previous}" value=" Previous Group" rendered="{!hasPrevious}">/apex:commandbutton apex:commandbutton action="{!next}" value="Next Group >" rendered="{!hasNext}">/apex:commandbutton>
apex:commandbutton action="{!last}" value="Last Group">/apex:commandbutton>
ONCOMPLETE String - The JavaScript invoked when the result of an AJAX update request completes on the client.
Thanks for your help....
Hi,
What you need is to call an Javascript function on oncomplete. Then in that javascript function call a controller method to save the records (via action function). Or you can use action support like
thanks for your input here Puneet,
I really like your "apex:actionsupport" example. I would be confident this is the solution I am looking for.....
At this time in my SF developer journey, I have no idea on how to write this controller method.
We are currently using a controller to limit the number of records within the ListView.
Can you point me in the right direction on writing the controller method to save the modified Account records within the ListView (via action function).
Again, thank you very much for you help........
I just tested this but it does not work..... just trying to keep it simple....
<apex:commandbutton action="{!next}" value="Next Group >" rendered="{!hasNext}" >
<apex:actionSupport event="onclickedbutton" action="{!save}" /> </apex:commandbutton>
Hi David,
<apex:commandbutton action="{!next}" value="Next Group >" rendered="{!hasNext}" >
<apex:actionSupport event="oncomplete" action="{!save}" />
</apex:commandbutton>
And the controller method will be
public PageReference save()
{
update YourAccountList;
}
Can you post your code then I can help by changing that. Please post the page and controller.
Puneet, again thank you for your help
In my controller, I do not know how to identify my “AccountList”
Here is more detail….
Somewhere here is the answer…. I just am not sure where
I am not sure about the public void doNothing() { }, can it be removed?
Current Controller Working to limit records in page set size
public class SuperNav2{
public SuperNav2(ApexPages.StandardSetController accountcontroller) {
accountcontroller.setPageSize(5);
}
public void doNothing() { }
}
Current Record Selection Using “SelectList”
<apex:panelGrid columns="14">
<apex:outputLabel value="Select List to Work: " for="SFSNviewsLists" />
<apex:selectList id="SFSNviewsLists" value="{!filterId}" size="1" >
<apex:actionSupport event="onchange" rerender="account_table" />
<apex:selectOptions value="{!listviewoptions}" />
</apex:selectList>
Current pageBlockTable
<apex:pageBlockTable value="{!SFSNaccounts}" var="accSFSN" id="account_table" >
<apex:column value="{!accSFSN.name}"/>
<apex:column headerValue="Worked?">
<apex:inputcheckbox value="{!accSFSN.Worked__c}" />
</apex:column>
<apex:column headerValue="Last Updated">
<apex:outputField value="{!accSFSN.lastmodifieddate}"/>
</apex:column>
<apex:column value="{!accSFSN.phone}" />
<apex:column value="{!accSFSN.type}"/>
<apex:column value="{!accSFSN.website}" />
</apex:pageBlockTable>
I guess you account list is SFSNaccounts the one you are using in value of pageblocktable. But where is this defined in controller? The code looks quite messy. Can you pm me what you want to achieve?
Thanks again for your help, we will get there……
Updated one line in Controller in BOLD with my best effort at defining “SFSNaccounts”
public class SuperNav2{
public SuperNav2(ApexPages.StandardSetController accountcontroller) {
accountcontroller.setPageSize(5);
}
public List<Account> SFSNaccounts;
public PageReference save()
{
update SFSNaccounts;
return null;
}
public void doNothing() { }
}
----------
When I check the checkbox for Worked in the pageblocktable row and click the save button we get…..
WHITE Page
Visualforce Error
System.VisualforceException: Modified rows exist in the records collection!
Hi David,
Check out these links
http://boards.developerforce.com/t5/Visualforce-Development/System-VisualforceException-Modified-rows-exist-in-the-records/td-p/245635
http://boards.developerforce.com/t5/Visualforce-Development/VF-pagination-Modified-rows-exist-in-the-records-collection-with/td-p/122446
Thanks,
Puneet