0

I have a set of select options in a dropdown which the user selects and based on the option selected different sets of pageblocktables are rendered. I want them to be able to inline edit and save each of these tables. When I give these tables inline edit/save functionality without using the select list, it works perfectly. However, when I use inline editing with selectlist; after click on the save button, the page reloads but then does not show any tables and data does not get saved. I am guessing there is problem with the doSave() function in my code.

VF code:

<apex:page controller="OppsController"> <apex:form > <apex:panelGrid columns="2"> <apex:selectList value="{!SectionNames}" required="True" size="1" multiselect="false"> <apex:selectOptions value="{!SectionItems}" /> <apex:actionSupport event="onchange" action="{!updateData}"/> </apex:selectList> </apex:panelGrid> <apex:outputPanel > <apex:outputPanel id="section1" rendered="{!section1}" > <apex:pageBlock > <apex:commandButton value="Save" action="{!doSaveUS}" /> <apex:pageBlockTable value="{!OppContentUS}" var="item" style="text-align:left;" > <apex:inlineEditSupport showOnEdit="SaveActiveState" /> <apex:facet name="header">US New Business This Quarter</apex:facet> <apex:column > <apex:facet name="header">Owner.Name</apex:facet> {!item['Owner.Name']} </apex:column> <apex:column > <apex:facet name="header">Account Name</apex:facet> {!item['Account.Name']} </apex:column> <apex:column > <apex:facet name="header">Opportunity Name</apex:facet> {!item['Name']} </apex:column> <apex:column > <apex:facet name="header">Stage</apex:facet> {!item['StageName']} </apex:column> <apex:column > <apex:facet name="header">Total Contract Value</apex:facet> {!item['Total_Contract_Value__c']} </apex:column> <apex:column > <apex:facet name="header">Tier</apex:facet> {!item['Opp_Tier_Group__c']} </apex:column> <apex:column > <apex:facet name="header">Notes</apex:facet> {!item['Opp_Owner_Notes__c']} </apex:column> </apex:pageBlockTable> </apex:pageBlock> </apex:outputPanel> </apex:outputPanel> <apex:outputPanel > <apex:outputPanel id="section2" rendered="{!section2}" > <apex:pageBlock > <apex:commandButton value="Save" action="{!doSaveUK}" /> <apex:pageBlockTable value="{!OppContentUK}" var="item" style="text-align:left;" > <apex:inlineEditSupport showOnEdit="SaveActiveState" /> <apex:facet name="header">UK New Business This Quarter</apex:facet> <apex:column > <apex:facet name="header">Owner.Name</apex:facet> {!item['Owner.Name']} </apex:column> <apex:column > <apex:facet name="header">Account Name</apex:facet> {!item['Account.Name']} </apex:column> <apex:column > <apex:facet name="header">Opportunity Name</apex:facet> {!item['Name']} </apex:column> <apex:column > <apex:facet name="header">Stage Name</apex:facet> <apex:outputfield value="{!item.StageName}" ></apex:outputField> </apex:column> <apex:column > <apex:facet name="header">Total Contract Value</apex:facet> {!item['Total_Contract_Value__c']} </apex:column> <apex:column > <apex:facet name="header">Tier</apex:facet> {!item['Opp_Tier_Group__c']} </apex:column> <apex:column > <apex:facet name="header">Notes</apex:facet> {!item['Opp_Owner_Notes__c']} </apex:column> </apex:pageBlockTable> </apex:pageBlock> </apex:outputPanel> </apex:outputPanel> 

Controller:

public with Sharing class OppsController { public String SectionNames {get;set;} public Boolean section1 {get; set;} public Boolean section2 {get; set;} public List<SelectOption> getSectionItems(){ section1 = false; section2 = false; List<SelectOption> SectionNames = new List<SelectOption>(); SectionNames.add(new SelectOption('','-- Select --')); SectionNames.add(new SelectOption('USA New Business','USA New Business')); SectionNames.add(new SelectOption('UK New Business','UK New Business')); return SectionNames; } public Pagereference updateData() { if(SectionNames == 'USA New Business') { section1 = true; } else if(SectionNames == 'UK New Business') { section2 = true; } return null; } List<Opportunity> oppsUK = new List<Opportunity>(); List<Opportunity> oppsUS = new List<Opportunity>(); public OppsController() { oppsUK = [SELECT ID, Account.ID, Account.Name, Name, Owner.Name, CloseDate, StageName, Opp_Tier_Group__c, Opp_Owner_Notes__c, Total_Contract_Value__c FROM Opportunity WHERE CloseDate = THIS_QUARTER and Sales_Team__c = 'EMEA' AND Type = 'New Business' ]; oppsUS = [SELECT ID, Account.ID, Account.Name, Name, Owner.Name, CloseDate, StageName, Opp_Tier_Group__c, Opp_Owner_Notes__c, Total_Contract_Value__c FROM Opportunity WHERE CloseDate = THIS_QUARTER and Sales_Team__c = 'US' AND Type = 'New Business' ]; } public List<Opportunity> getOppContentUK() { return this.oppsUK; } public PageReference doSaveUK() { system.debug(oppsUK); update oppsUK; return ApexPages.CurrentPage(); } public List<Opportunity> getOppContentUS() { return this.oppsUS; } public PageReference doSaveUS() { system.debug(oppsUS); update oppsUS; return ApexPages.CurrentPage(); } } 
4
  • How do you format this damn thing??!! Its cutting off half the code Commented Dec 18, 2015 at 20:48
  • 1
    Edit our post, select the Visualforce or Apex and click the {} button to format. Commented Dec 18, 2015 at 20:51
  • @KeithC Any idea about the posted question? Commented Dec 19, 2015 at 0:25
  • 1
    You're probably getting a DmlException. Wrap your update call in a try/catch. In your catch block make sure you call ApexPages.addMessages then return null. Commented Dec 19, 2015 at 4:28

1 Answer 1

1

Issue with

 public List<SelectOption> getSectionItems(){ section1 = false; section2 = false; List<SelectOption> SectionNames = new List<SelectOption>(); SectionNames.add(new SelectOption('','-- Select --')); SectionNames.add(new SelectOption('USA New Business','USA New Business')); SectionNames.add(new SelectOption('UK New Business','UK New Business')); return SectionNames; } 

Remove

section1 = false; section2 = false; 

this and add into constructor

what happend constructor always call once when page load but this getSectionItems method call everytime whenever we call a method from page

8
  • I added this in. Same issue. Not saving. Page reloads and the tables disappear. Commented Dec 19, 2015 at 7:27
  • are you able to get picklist values i controller? Commented Dec 19, 2015 at 7:31
  • Not sure what you mean by that. The table values after edit are not getting saved. The selectlist seems to be blocking the update. Commented Dec 19, 2015 at 7:35
  • @Mike I just used your code in my org it is working fine Commented Dec 19, 2015 at 7:45
  • I am indeed using it. I have used apex:inlineEditSupport in my table and I use apex:outfield on the ones I want to inline edit. It works perfectly without apex:selectList but with that inlineEditing doesn't work. Commented Dec 19, 2015 at 7:48

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.