I'm trying to update an Account from a visualforce but so far I haven't managed to be able to save the changes. I'm using apex:inputField
for the user interface but when I try to save the values they are not updated. My fields are not updating from the visualforce.
Here's the main part of my page:
<div class="portlet-body">
<form class="form-horizontal" role="form">
<div class="form-body">
<apex:form>
<img src="https://allizancespecializedsytems--emorandev.cs2.my.salesforce.com/img/social/unknown_company_pic.png"/>
<h2 class="margin-bottom-20">{!Account.Name} </h2>
<div class="row">
<!--/span-->
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3">Nombre:</label>
<div class="col-md-9">
<apex:inputField value="{!account.Name}" styleClass="form-control"/>
<!--Trying to change this value but is never updated-->
</div>
</div>
</div>
</div>
</apex:form>
</div>
<div class="form-actions">
<apex:form>
<div class="row">
<div class="col-md-6">
<div class="row">
<div class="col-md-offset-3 col-md-9">
<apex:commandButton value="Guardar" action="{!updateRecord}" styleClass="btn green"/>
<a href="/apex/CustomerPortalAccounts?Id={!account.Id}" class="btn default" role="button">Cancelar</a>
</div>
</div>
</div>
<div class="col-md-6"> </div>
</div>
</apex:form>
</div>
</form>
</div>
And this is the updateRecord method in my controller:
public class CustomerPortalController {
static final String URL_PARAM_ACCOUNT = 'Id';
static final String URL_PARAM_CONTACT = 'contactId';
static final String URL_PARAM_OPPORTUNITY = 'opportunityId';
static final String URL_PARAM_SYSTEM = 'systemId';
static final String URL_PARAM_EDIT = 'edit';
public Account account{get;set;}
public Contact contact{get;set;}
public Opportunity opportunity{get;set;}
public Sistemas__c sistem {get;set;}
public String showAccountDetails{get;set;}
public String showAccountList{get;set;}
public String showAccountEdit{get;set;}
public String accountId{get;set;}
public String contactId{get;set;}
public String opportunityId{get;set;}
public String page{get;set;}
public String accountName{get;set;}
public List<Sistemas__c> sistemas{get;set;}
public CustomerPortalController() {
accountId = ApexPages.currentPage().getParameters().get(URL_PARAM_ACCOUNT);
contactId = ApexPages.currentPage().getParameters().get(URL_PARAM_CONTACT);
opportunityId = ApexPages.currentPage().getParameters().get(URL_PARAM_OPPORTUNITY);
if(accountId != null){
this.account = [Select Id,Name,Externo_temp__c,Phone,BillingCountry,BillingPostalCode,BillingState,BillingCity,Colonia__c,BillingStreet,Industry from Account where Id=:accountId];
ParamValidation validationAccountId = validatePageParam(URL_PARAM_ACCOUNT);
this.showAccountDetails = validationAccountId.showDetails;
this.showAccountList = validationAccountId.showList;
this.showAccountEdit = validationAccountId.showEdit;
}
else if(contactId != null){
this.contact = [Select Id,Name,Title, Email from Contact where Id=:contactId];
ParamValidation validationAccountId = validatePageParam(URL_PARAM_CONTACT);
this.showAccountDetails = validationAccountId.showDetails;
this.showAccountList = validationAccountId.showList;
this.showAccountEdit = validationAccountId.showEdit;
}
else if(opportunityId != null){
this.opportunity = [Select Id,Name,LeadSource,Amount,StageName,CloseDate from Opportunity where Id=:opportunityId];
this.sistemas = [Select Id, Name, GM_TOTAL__c, MG_MEX__c, MG_US__c, Area_FT2__c, Bonds__c, Clase__c,
Cost_Hr_Eng__c,Cost_Hr_Installation__c,Cost_Hr_Supervision__c,Costo_MEX__c,
Costo_Total__c,Costo_USA__c,Cotizacion__c,Days__c,Engineering__c,Engineering_Trave__c,
Equipment__c,Equipo_Mayor__c,Fabrication__c,Freight__c,Import_Duties__c,Inst_Travel__c,
Installation__c,Installation_Cost__c,Local_Material__c,Material__c,Obra_Civil__c,
Oportunidad__c,Otros__c,Paint__c,Partida__c,Per_Team__c,Precio_Mex__c,Precio_Total__c,
Precio_USA__c,Se_Cotiza__c,Sistema__c,Sub_Contrato__c,Supervision__c,Supervision_Cost__c,
Tipo_de_Cambio__c,Total__c,Unidad__c,Union__c,Vendedor__c,Version__c
from Sistemas__c where Oportunidad__r.Id=:opportunityId];
ParamValidation validationAccountId = validatePageParam(URL_PARAM_OPPORTUNITY);
this.showAccountDetails = validationAccountId.showDetails;
this.showAccountList = validationAccountId.showList;
this.showAccountEdit = validationAccountId.showEdit;
}
else{
this.showAccountDetails = 'none';
this.showAccountEdit = 'none';
this.showAccountList = '';
}
}
public List<Account> getAccounts(){
List<Account> accountsAvailable = [Select Id,Name,CreatedDate,Externo_temp__c,Phone from Account];
return accountsAvailable;
}
public List<Contact> getContacts(){
List<Contact> contact_list;
if(accountId!=null){
contact_list = [Select Id,Name,FirstName,LastName,Email,CreatedDate,Title from Contact where AccountId = :accountId];
}
else{
contact_list = [Select Id,Name,FirstName,LastName,Email,CreatedDate,Title from Contact];
}
if(contact_list.size()>0){
return contact_list;
}
else{
return null;
}
}
public List<Opportunity> getOpportunities(){
List<Opportunity> opportunity_list = [Select Id,Name,CreatedDate,CloseDate,StageName,Amount,LeadSource from Opportunity where AccountId = :accountId];
if(opportunity_list.size()>0){
return opportunity_list;
}
else{
return null;
}
}
public List<SelectOption> getAccountIndustry() {
List<SelectOption> options = new List<SelectOption>();
Schema.DescribeFieldResult fieldResult = Schema.Account.Industry.getDescribe();
List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
for( Schema.PicklistEntry f : ple) {
options.add(new SelectOption(f.getLabel(), f.getValue()));
}
return options;
}
public List<SelectOption> getBillingStates() {
List<SelectOption> options = new List<SelectOption>();
Schema.DescribeFieldResult fieldResult = Schema.Account.BillingState.getDescribe();
List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
for( Schema.PicklistEntry f : ple) {
options.add(new SelectOption(f.getLabel(), f.getValue()));
}
return options;
}
public List<SelectOption> getBillingCountries() {
List<SelectOption> options = new List<SelectOption>();
Schema.DescribeFieldResult fieldResult = Schema.Account.BillingCountry.getDescribe();
List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
for( Schema.PicklistEntry f : ple) {
options.add(new SelectOption(f.getLabel(), f.getValue()));
}
return options;
}
public ParamValidation validatePageParam(String paramName){
String result = '';
ParamValidation validation = new ParamValidation();
if (ApexPages.currentPage().getParameters().get(paramName) != null) {
validation.showList = 'none';
String editMode = ApexPages.currentPage().getParameters().get(URL_PARAM_EDIT);
if (editMode != null) {
validation.showDetails = editMode == 'true' ? 'none' : '';
validation.showEdit = editMode == 'true' ? '' : 'none';
} else {
validation.showDetails = '';
validation.showEdit = 'none';
}
} else {
validation.showList = '';
validation.showDetails = 'none';
validation.showEdit = 'none';
}
return validation;
}
public class ParamValidation{
public String showList{get;set;}
public String showDetails{get;set;}
public String showEdit{get;set;}
}
public PageReference editRecord() {
String editUrl = '';
if (accountId != null) {
editUrl = 'CustomerPortalAccounts?Id=' + accountId + '&';
} else if (opportunityId != null) {
editUrl = 'CustomerPortalOpportunities?opportunityId=' + opportunityId + '&';
} else if (contactId != null) {
editUrl = 'CustomerPortalContacts?contactId=' + contactId + '&';
}
PageReference editPage = new PageReference('/apex/' + editUrl + URL_PARAM_EDIT + '=true');
editPage.setRedirect(true);
return editPage;
}
public void updateRecord() {
try {
System.debug('About to update');
System.debug('Simple var: ' + accountName);
System.debug(account);
update account;
} catch (DmlException e) {
System.debug('Fail!!! ' + e.getMessage());
ApexPages.addMessages(e);
}
/*PageReference detailPage = new PageReference('/apex/CustomerPortalAccounts?Id=' + accountId);
detailPage.setRedirect(true);
return detailPage;*/
}
}
updateRecord
get's called, no matter what I type on myinputField
the account name remains the same.