Skip to main content
lokesh rade (Cloudbyz) 님이 #Visualforce에 질문했습니다
How to Insert Date, lookup, text, text area, picklist field where these fields are custom fields. And also want to insert attached file in the related list.This all should get inserted on click of submit button. Using the standard controller for the custom object.

Problem is that by using the standard controller for the custom object, I am getting  Date, lookup, text, text area, picklist field value in the record by using save() standard method of Salesforce. but I can't get attachment file in the related list of file and attachment section. 

Any help will be greatly appreciated.

Thanks in advance.
답변 1개
  1. 2017년 6월 30일 오전 11:55
    i Hope you can take help from this code 

    Apex Class

    How do we do this? Well, the video walks through the entire process but in a nutshell here's what we do:

    Create a new custom object with attachments that will replace the standard attachments related list on the page layout.

    Create a Visualforce page (code) and custom Controller (code) that allows the user to upload documents, images, etc. to your new custom attachments object as if it were a standard attachment.

    Remove the standard attachments related list from the page layout.

    Add the custom attachments related list to the page layout.

    Replace the "New" button on the custom attachments related list with an "Add Attachment" button that opens the new Visualforce page.

    Video link-https://youtu.be/hiC4lKtd-XM

    Apex Code

    public class UploadAttachmentController {

    public String selectedType {get;set;}

    public Boolean selectedAwesomeness {get;set;}

    public String description {get;set;}

    private Contact contact {get;set;}

    public String fileName {get;set;}

    public Blob fileBody {get;set;}

    public UploadAttachmentController(ApexPages.StandardController controller) {

    this.contact = (Contact)controller.getRecord();

    }

    // creates a new Contact_Attachment__c record

    private Database.SaveResult saveCustomAttachment() {

    Contact_Attachment__c obj = new Contact_Attachment__c();

    obj.contact__c = contact.Id;

    obj.description__c = description;

    obj.type__c = selectedType;

    obj.awesome__c = selectedAwesomeness;

    // fill out cust obj fields

    return Database.insert(obj);

    }

    // create an actual Attachment record with the Contact_Attachment__c as parent

    private Database.SaveResult saveStandardAttachment(Id parentId) {

    Database.SaveResult result;

    Attachment attachment = new Attachment();

    attachment.body = this.fileBody;

    attachment.name = this.fileName;

    attachment.parentId = parentId;

    // inser the attahcment

    result = Database.insert(attachment);

    // reset the file for the view state

    fileBody = Blob.valueOf(' ');

    return result;

    }

    /**

    * Upload process is:

    * 1. Insert new Contact_Attachment__c record

    * 2. Insert new Attachment with the new Contact_Attachment__c record as parent

    * 3. Update the Contact_Attachment__c record with the ID of the new Attachment

    **/

    public PageReference processUpload() {

    try {

    Database.SaveResult customAttachmentResult = saveCustomAttachment();

    if (customAttachmentResult == null || !customAttachmentResult.isSuccess()) {

    ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.ERROR,

    'Could not save attachment.'));

    return null;

    }

    Database.SaveResult attachmentResult = saveStandardAttachment(customAttachmentResult.getId());

    if (attachmentResult == null || !attachmentResult.isSuccess()) {

    ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.ERROR,

    'Could not save attachment.'));

    return null;

    } else {

    // update the custom attachment record with some attachment info

    Contact_Attachment__c customAttachment = [select id from Contact_Attachment__c where id = :customAttachmentResult.getId()];

    customAttachment.name = this.fileName;

    customAttachment.Attachment__c = attachmentResult.getId();

    update customAttachment;

    }

    } catch (Exception e) {

    ApexPages.AddMessages(e);

    return null;

    }

    return new PageReference('/'+contact.Id);

    }

    public PageReference back() {

    return new PageReference('/'+contact.Id);

    }

    }

    Vf Page

     

    <apex:page standardController="Contact" tabStyle="Contact" extensions="UploadAttachmentController">

    <apex:sectionHeader title="{!Contact.Name}" subtitle="Attach File"/>

    <apex:form id="form_Upload">

    <apex:pageBlock >

    <apex:pageBlockButtons >

    <apex:commandButton action="{!back}" value="Back to {!Contact.Name}"/>

    <apex:commandButton action="{!back}" value="Cancel"/>

    </apex:pageBlockButtons>

    <apex:pageMessages />

    <apex:pageBlockSection columns="1">

    <apex:pageBlockSectionItem >

    <apex:outputLabel value="File" for="file_File"/>

    <apex:inputFile id="file_File" value="{!fileBody}" filename="{!fileName}"/>

    </apex:pageBlockSectionItem>

    <apex:pageBlockSectionItem >

    <apex:outputLabel value="Type" for="type"/>

    <apex:selectList value="{!selectedType}" size="1" id="type">

    <apex:selectOption itemValue="Plain ole awesome" itemLabel="Plain ole awesome"/>

    <apex:selectOption itemValue="Super awesome" itemLabel="Super awesome"/>

    <apex:selectOption itemValue="Most awesomest" itemLabel="Most awesomest"/>

    </apex:selectList>

    </apex:pageBlockSectionItem>

    <apex:pageBlockSectionItem >

    <apex:outputLabel value="Is the file awesome?" for="visible"/>

    <apex:selectList value="{!selectedAwesomeness}" size="1" id="visible">

    <apex:selectOption itemValue="false" itemLabel="No"/>

    <apex:selectOption itemValue="true" itemLabel="Yes"/>

    </apex:selectList>

    </apex:pageBlockSectionItem>

    <apex:pageBlockSectionItem >

    <apex:outputLabel value="Description" for="description"/>

    <apex:inputTextarea id="description" value="{!description}" rows="4" cols="50"/>

    </apex:pageBlockSectionItem>

    <apex:pageBlockSectionItem >

    <apex:outputLabel value="" for="uploadBtn"/>

    <apex:commandButton id="uploadBtn" value="Attach File" action="{!processUpload}" />

    </apex:pageBlockSectionItem>

    </apex:pageBlockSection>

    </apex:pageBlock>

    </apex:form>

    </apex:page>

     
0/9000