You need to sign in to do that
Don't have an account?
Bridgetree
aggregate function in datatable
Hi all....
I have a Dynamic data table in which i will have a value in each row. Now i want to perform the addition of these values.
The values of row are brought from object of a class.
Description is like this.
I have a table and columns like this
Product name
clean value
No of items
Total
So after the total is calculated for each row,
i want to calculate the sum of values in Column.
Pls suggest a way for this. I want to display the value.
You should be able to do all of this logic in your controller code (apex). Apex can total the value and return the result to the VisualForce page. If you provide the code you have, I could try to give more specifics.
The VisualForce page is like this.
<apex:page standardStylesheets="false" showHeader="false" sidebar="false"
controller="StoreFront" >
<apex:stylesheet value="{!URLFOR($Resource.styles, 'styles.css')}"/>
<h1>Current Orders</h1>
<style type="text/css">
#one {
width:20px; /* set width here */
padding-bottom:2em;
}
</style>
<apex:form >
<apex:dataTable value="{!products}" var="pitem" rowClasses="odd,even">
<apex:column headerValue="Product Name">
<apex:outputText value="{!pitem.merchandise.Product_name__c}"/>
</apex:column>
<apex:column headerValue="Clean" width="20">
<apex:outputText value="{!pitem.merchandise.clean__c}"/>
</apex:column>
<apex:column headerValue="#">
<apex:inputText value="{!pitem.count_clean}"/>
<br/>
<apex:commandButton action="{!shop}" reRender="msg" value="Buy" />
</apex:column>
<apex:column headerValue="Total">
<apex:outputText id="msg" value="{!total_clean}"/>
</apex:column>
<apex:column headerValue="Sanitize">
<apex:outputText value="{!pitem.merchandise.sanitize__c}"/>
</apex:column>
<apex:column headerValue="#">
<apex:inputText value="{!pitem.count_sanitize}"/>
<br/>
<apex:commandButton action="{!shop}" reRender="msg1" value="Buy" />
</apex:column>
<apex:column headerValue="Total">
<apex:outputText id="msg1" value="{!total_sanitize}"/>
</apex:column>
<apex:column headerValue="Deodorize">
<apex:outputText value="{!pitem.merchandise.deodorize__c}"/>
</apex:column>
<apex:column headerValue="#">
<apex:inputText value="{!pitem.count_deodorize}"/>
<br/>
<apex:commandButton action="{!shop}" reRender="msg2" value="Buy" />
</apex:column>
<apex:column headerValue="Total">
<apex:outputText id="msg2" value="{!total_deodorize}"/>
</apex:column>
<apex:column headerValue="Dust-Mite">
<apex:outputText value="{!pitem.merchandise.dust_mite__c}"/>
</apex:column>
<apex:column headerValue="#">
<apex:inputText value="{!pitem.count_dustmite}"/>
<br/>
<apex:commandButton action="{!shop}" reRender="msg3" value="Buy" />
</apex:column>
<apex:column headerValue="Total">
<apex:outputText id="msg3" value="{!total_dustmite}"/>
</apex:column>
<apex:column headerValue="Protectant">
<apex:outputText value="{!pitem.merchandise.protectant__c}"/>
</apex:column>
<apex:column headerValue="#">
<apex:inputText value="{!pitem.count_protectant}"/>
<br/>
<apex:commandButton action="{!shop}" reRender="msg4" value="Buy" />
</apex:column>
<apex:column headerValue="Total">
<apex:outputText id="msg4" value="{!total_protectant}"/>
</apex:column>
<apex:column headerValue="Line Total">
<apex:commandButton action="{!shop}" reRender="msg5" value="CALC" />
<br /><br />
<apex:outputText id="msg5" value="{!pitem.linetotal}"/>
</apex:column>
</apex:dataTable>
<br />
<br />
<apex:commandButton action="{!shop}" reRender="total" value="Find Total" />
</apex:form>
<apex:outputPanel id="total">{!message}
<br />
{!messages}
</apex:outputPanel>
<br />
</apex:page>
And the Controller is
public class StoreFront {
public Double total_protectant { get; set; }
public Double total_dustmite { get; set; }
public Double total_sanitize { get; set; }
public Double total_deodorize { get; set; }
public String message { get; set; }
public String messages { get; set; }
public Double total_clean { get; set; }
public double clean=0;
public PageReference shop() {
total_clean=0;
total_sanitize=0;
total_deodorize=0;
total_dustmite=0;
total_protectant=0;
message = 'Your clean only ';
messages = 'Your order total is';
for (DisplayMerchandise p: products) {
if (p.count_clean > 0) {
clean=p.merchandise.clean__c * p.count_clean;
total_clean=clean;
p.cleanonly += clean;
message += ''+ ' (' + p.cleanonly + ') ';
}
if (p.count_sanitize >0)
{
total_sanitize=p.merchandise.sanitize__c * p.count_sanitize;
}
if (p.count_deodorize >0)
{
total_deodorize=p.merchandise.deodorize__c * p.count_deodorize;
}
if (p.count_dustmite >0)
{
total_dustmite=p.merchandise.dust_mite__c * p.count_dustmite;
}
if (p.count_protectant >0)
{
total_protectant=p.merchandise.protectant__c * p.count_protectant;
}
p.linetotal=total_clean + total_sanitize + total_deodorize + total_dustmite + total_protectant;
}
return null;
}
DisplayMerchandise[] products;
public class DisplayMerchandise {
public MileageTracking__Franchisee__c merchandise { get; set; }
public Decimal count_clean { get; set; }
public Decimal count_sanitize { get; set; }
public Decimal count_deodorize { get; set; }
public Decimal count_dustmite { get; set; }
public Decimal count_protectant { get; set; }
public Double linetotal { get; set; }
public Double cleanonly { get; set
{cleanonly=0;} }
public Double ordertotal { get; set; }
public DisplayMerchandise(MileageTracking__Franchisee__c item) {
this.merchandise = item;
}
}
public DisplayMerchandise[] getProducts() {
if (products == null) {
products = new DisplayMerchandise[]{};
for (MileageTracking__Franchisee__c item :
[SELECT MileageTracking__Product_name__c, MileageTracking__clean__c, MileageTracking__sanitize__c,
MileageTracking__deodorize__c, MileageTracking__dust_mite__c, MileageTracking__protectant__c
FROM MileageTracking__Franchisee__c]) {
products.add(new DisplayMerchandise(item));
}
}
return products;
}
}
That is where i am fixed up..
Pls find a solution
Phaniraj N