Sunday 21 February 2016

javascriptImplentation for Product Line Items

Scenario :
Create a  VF page   as given below


1.When you click on AddMore button four more should be added to the pageBlockTable


2.When you enter the quantity and price value it should automatically calculate the  total value and display the total
When we click on add button on the row new row should be created below the row selected
 with same values
When you click on del button that row should be deleted  from the pageblockTable


Code:  Class :javascriptExam
public class JavaScriptExam {
    public List<Product> products{set;get;}
    public Integer rowNo{set;get;}
    public javascriptExam(){
                products=new List<Product>();
        addProducts();
    }
    public void addProducts(){
        for(Integer i=0;i<=3;i++){
            Product p=new Product();
            p.total=0;
            products.add(p);
        }
    }
    public void addRow(){
        Product p=products.get(rowNo);
        if(rowno+1<products.size())
        products.add(rowno+1,p);
        else
        products.add(p);
    }
    public void removeRow(){
        products.remove(rowNo);
    }
    public class product{
        public string pname {set;get;}
        public Integer quant {set;get;}
        public Decimal price {set;get;}
        public Decimal total {set;get;} 
    }
}

Visualforce page:
<apex:page controller="JavaScriptExam" id="page">
    <script>
                function find(myid){
                var rowid=myid.split(':');
            document.getElementById('page:fm:pb:pbt:'+rowid[4]+':sec').value=rowid[4];
        }
                function show(myid){
                var rowid=myid.split(':');
            var quant=document.getElementById('page:fm:pb:pbt:'+rowid[4]+':quant').value;
            var price=document.getElementById('page:fm:pb:pbt:'+rowid[4]+':price').value;
            var total=quant*price;
            document.getElementById('page:fm:pb:pbt:'+rowid[4]+':total').value=total;
        }
    </script>
    <apex:form id="fm">
                <apex:pageBlock title="Product List" id="pb">
                <apex:pageBlockTable value="{!products}" var="a" id="pbt">
                <apex:column headerValue="Product Name">
                    <apex:inputText value="{!a.pname}" id="pname" />
                </apex:column>
                <apex:column  headerValue="Quantity">
                    <apex:inputText value="{!a.quant}"  size="4" id="quant" onchange="show(this.id)" />
                </apex:column>
                <apex:column headerValue="Price">
                    <apex:inputText value="{!a.price}" size="4" id="price" onchange="show(this.id)" />
                </apex:column>
                <apex:column headerValue="Total">
                    <apex:inputText value="{!a.total}" id="total" />
                </apex:column>
                <apex:column headerValue="Action">
                    <apex:commandButton value="Add"  id="b1" onclick="find(this.id)" action="{!addRow}" /> 
                    <apex:commandButton  value="Del" id="b2" onclick="find(thid.id)"  action="{!removeRow}"/>
                    <apex:inputHidden  value="{!rowno}" id="sec"/>
                </apex:column>
            </apex:pageBlockTable>
            <apex:pageBlockButtons location="bottom">
                <apex:commandButton value="AddMore" action="{!addProducts}"  />
             </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:form>

</apex:page>

No comments:

Post a Comment