You need to sign in to do that
Don't have an account?
jburnsST
VF Page to create records default to 7 rows
I have a simple class and vf page which creates new child custom object records. Currently you press add/remove rows to add or remove another row for a new record.
The parent object is lead__c, the child object is lead_debt__c. The vf page is called by a button on the lead record called add debt.
I am trying to default it to 7 rows and then the user can remove any rows they do not use. I cannot seem to get this to work, can someone please lead me in the right direction?
CLASS:
public class addDebt { public List<Lead_Debt__c> debts {get; set;} private final Lead__c lead; public addDebt(ApexPages.StandardController myController) { lead=(Lead__c)myController.getrecord(); debts = new List<Lead_Debt__c>(); Lead_Debt__c debt = new Lead_Debt__c(); debt.Lead__c = lead.id; debts.add(debt);} public Lead__c getLead() { return [SELECT First_Name__c, Name, Last_Name__c FROM Lead__c WHERE Id = :lead.Id]; } public void addrow() { Lead_Debt__c debt = new Lead_Debt__c(); debt.Lead__c = lead.id; debts.add(debt);} public void removerow(){ Integer i = debts.size(); debts.remove(i-1);} public PageReference save() { try { upsert debts; } catch (Exception ex) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.FATAL,'Error saving debt. Please notify the systems administrator.' + ex)); } //PageReference home = new PageReference('/home/home.jsp'); //home.setRedirect(true); //return home; }} PageReference parrec = new PageReference('/'+lead.id); parrec.setRedirect(true); return parrec; } public static testmethod void TestAddDebt() { PageReference pageRef = Page.addDebt; Test.setCurrentPage(pageRef); Lead__c lead = Unit_Tests.CreateTestLead(); // Add parameters to page URL ApexPages.currentPage().getParameters().put('id', lead.Id); // test all functionality ApexPages.Standardcontroller sc = new ApexPages.Standardcontroller(lead); addDebt dbtPage = new addDebt(sc); dbtPage.addrow(); dbtPage.removerow(); dbtPage.save(); } }
VF Page:
<apex:page standardController="Lead__c" extensions="addDebt"> <apex:form > <apex:pageBlock title="Add Debt" > <apex:messages style="color:red;font-weight: bolder;" /> <apex:pageBlockButtons > <apex:commandButton value="Save" action="{!save}" rerender="error" /> <apex:commandButton value="Cancel" action="{!cancel}" /> </apex:pageBlockButtons> <apex:pageBlockTable value="{!debts}" var="a" id="table"> <apex:column headerValue="Creditor"> <apex:inputField value="{!a.Creditor__c}"/> </apex:column> <apex:column headerValue="Balance"> <apex:inputField value="{!a.Current_Balance__c}"/> </apex:column> <apex:column headerValue="Account Number"> <apex:inputField value="{!a.Account_Number__c}"/> </apex:column> </apex:pageBlockTable> <apex:pageblockButtons location="bottom"> <div style="text-align:right;margin-right:30px;font-weight:bold;"> <apex:commandLink value="Add Row" action="{!addRow}" rerender="table,error" immediate="true" /> | <apex:commandLink value="Remove Row" action="{!removeRow}" rerender="table,error" immediate="true" /> </div> </apex:pageblockButtons> </apex:pageBlock> </apex:form> </apex:page>
Hi,
First let me ask you this, were you able to make it work for a single row?
In yes then probably running that code over 7 iterations should solve your problem.
Yes, this works with one row. Probably a stupid question but how would I do that?