• Rishab Goyal 8
  • NEWBIE
  • 0 Points
  • Member since 2017

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 1
    Questions
  • 2
    Replies
I am creating a VF page to mass issue books in a library management system. I have a custom junction object (Book_Issue__c) which is a child of Book__c object and Contact object.
 
I am using the following code for the VF Page
<apex:page Controller="MultipleBookIssue" >
    
    
    <apex:form >
        <apex:pageBlock title="Mass Issue Books">
            
            <apex:pageBlockTable Value="{!listBookIssue}" var="issue" id="table" >
                <apex:column headerValue="Select">
                    
                    <apex:inputCheckbox value="{!issue.selected}"/>
                    
                </apex:column>        
                <apex:column headerValue="Book" >
                    
                    <apex:inputField value="{!issue.bi.Book__c}"/>
                </apex:column>
                <apex:column headerValue="Issued To" >
                    <apex:inputField value="{!issue.bi.Issued_To__c}"/>
                </apex:column>
                
                <apex:column headerValue="Issue Date" >
                    <apex:inputField value="{!issue.bi.Book_Issue_Date__c}"/>
                </apex:column>        
                
            </apex:pageBlockTable>
            <apex:pageBlockButtons location="Bottom" >
                <apex:commandButton value="Add Book Issue Row" action="{!addBookIssueRow}" immediate="true"/>
           
                <apex:commandButton value="Delete Book Issue Row" action="{!deleteBookIssueRow}" rendered="true" />
          
                <apex:commandButton action="{!saveBookIssue}" value="Save Book Issue"/>
            </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:form>
 
</apex:page>

User-added imageUser-added image
 
public class MultipleBookIssue {
    
    public list<wBookIssue> listBookIssue{get;set;}
    
    public void deleteBookIssueRow() {
        
        System.debug('before: ' + listBookIssue);
        
        Integer j=0;
        while(j<listBookIssue.size())
        {
            if(listBookIssue.get(j).selected==true){
                listBookIssue.remove(j);
                j--;
            }
            j++;
        }
/*
        List<Integer> deleteList = new List<Integer>();
        Integer i =0;
        for(wBookIssue wbi : listBookIssue) {
            if(wbi.selected == true) {
                deleteList.add(i);
                listBookIssue.remove(i);
            }
            i++;
        }
        */
        
        System.debug('after: ' + listBookIssue);
        
    }
    
    
    
    public MultipleBookIssue(){
        listBookIssue= new list<wBookIssue>();
        listBookIssue.add(new wBookIssue());
    }
    
    public void addBookIssueRow(){
        listBookIssue.add(new wBookIssue());
    }
    
    public PageReference saveBookIssue()
    {
        List<Book_Issue__c> biList = new List<Book_Issue__c>();
        for(wBookIssue wbi : listBookIssue) {
            biList.add(wbi.bi);
        }
        
        insert biList;
        
        return Page.AllBooksIssued;
    }
    
    public class wBookIssue {
        public Book_Issue__c bi {get; set;}
        public boolean selected {get; set;}
        
        public wBookIssue() {
            bi = new Book_Issue__c();
            selected = false;
        }
    }
}
 
But I am not able to delete the row.. I am attaching the screenshot of the vf page.
 
I am creating a VF page to mass issue books in a library management system. I have a custom junction object (Book_Issue__c) which is a child of Book__c object and Contact object.
 
I am using the following code for the VF Page
<apex:page Controller="MultipleBookIssue" >
    
    
    <apex:form >
        <apex:pageBlock title="Mass Issue Books">
            
            <apex:pageBlockTable Value="{!listBookIssue}" var="issue" id="table" >
                <apex:column headerValue="Select">
                    
                    <apex:inputCheckbox value="{!issue.selected}"/>
                    
                </apex:column>        
                <apex:column headerValue="Book" >
                    
                    <apex:inputField value="{!issue.bi.Book__c}"/>
                </apex:column>
                <apex:column headerValue="Issued To" >
                    <apex:inputField value="{!issue.bi.Issued_To__c}"/>
                </apex:column>
                
                <apex:column headerValue="Issue Date" >
                    <apex:inputField value="{!issue.bi.Book_Issue_Date__c}"/>
                </apex:column>        
                
            </apex:pageBlockTable>
            <apex:pageBlockButtons location="Bottom" >
                <apex:commandButton value="Add Book Issue Row" action="{!addBookIssueRow}" immediate="true"/>
           
                <apex:commandButton value="Delete Book Issue Row" action="{!deleteBookIssueRow}" rendered="true" />
          
                <apex:commandButton action="{!saveBookIssue}" value="Save Book Issue"/>
            </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:form>
 
</apex:page>

User-added imageUser-added image
 
public class MultipleBookIssue {
    
    public list<wBookIssue> listBookIssue{get;set;}
    
    public void deleteBookIssueRow() {
        
        System.debug('before: ' + listBookIssue);
        
        Integer j=0;
        while(j<listBookIssue.size())
        {
            if(listBookIssue.get(j).selected==true){
                listBookIssue.remove(j);
                j--;
            }
            j++;
        }
/*
        List<Integer> deleteList = new List<Integer>();
        Integer i =0;
        for(wBookIssue wbi : listBookIssue) {
            if(wbi.selected == true) {
                deleteList.add(i);
                listBookIssue.remove(i);
            }
            i++;
        }
        */
        
        System.debug('after: ' + listBookIssue);
        
    }
    
    
    
    public MultipleBookIssue(){
        listBookIssue= new list<wBookIssue>();
        listBookIssue.add(new wBookIssue());
    }
    
    public void addBookIssueRow(){
        listBookIssue.add(new wBookIssue());
    }
    
    public PageReference saveBookIssue()
    {
        List<Book_Issue__c> biList = new List<Book_Issue__c>();
        for(wBookIssue wbi : listBookIssue) {
            biList.add(wbi.bi);
        }
        
        insert biList;
        
        return Page.AllBooksIssued;
    }
    
    public class wBookIssue {
        public Book_Issue__c bi {get; set;}
        public boolean selected {get; set;}
        
        public wBookIssue() {
            bi = new Book_Issue__c();
            selected = false;
        }
    }
}
 
But I am not able to delete the row.. I am attaching the screenshot of the vf page.