Hey guys,
I’m using Grid to display FedEx rate. I want to add a extra footer to sum the total price for each column. Does someone know how to get the column’s values?
Here is my code:
Grid<QuoteDetails> items = new Grid<QuoteDetails>();
items.addColumn(QuoteDetails::getProductName).setId("item").setCaption("Item").setWidth(120)
.setResizable(false);
// items.addColumn(QuoteDetails::getWeight).setId("itemWeight").setCaption("Weight").setResizable(false);
items.addComponentColumn(quoteDetail -> {
TextField data = new TextField();
data.setSizeFull();
data.addStyleName(ValoTheme.TEXTFIELD_BORDERLESS);
data.setValue(quoteDetail.getWeight());
data.addValueChangeListener(event -> {
if (!event.getValue().isEmpty() && event.getValue() != null) {
quoteDetail.setWeight(event.getValue());
}
});
data.addFocusListener(event -> data.selectAll());
return data;
}).setId("itemWeight").setCaption("Weight").setResizable(false);
items.addColumn(QuoteDetails::getLength).setId("itemLength").setCaption("L").setResizable(false);
items.addColumn(QuoteDetails::getWidth).setId("itemWidth").setCaption("W").setResizable(false);
items.addColumn(QuoteDetails::getHeight).setId("itemHeight").setCaption("H").setResizable(false);
items.addColumn(QuoteDetails::getQty).setId("itemQty").setCaption("QTY").setResizable(false);
items.addColumn(QuoteDetails::getHome_listPrice).setId("h_list").setCaption("List Price");
items.addColumn(QuoteDetails::getHome_ourPrice).setId("h_our").setCaption("Our Price");
items.addColumn(QuoteDetails::getGround_listPrice).setId("g_list").setCaption("List Price");
items.addColumn(QuoteDetails::getGround_ourPrice).setId("g_our").setCaption("Our Price");
items.addColumn(QuoteDetails::getFirstOvernight_listPrice).setId("fon_list").setCaption("List Price");
items.addColumn(QuoteDetails::getFirstOvernight_ourPrice).setId("fon_our").setCaption("Our Price");
items.addColumn(QuoteDetails::getPriorityOvernight_listPrice).setId("pon_list").setCaption("List Price");
items.addColumn(QuoteDetails::getPriorityOvernight_ourPrice).setId("pon_our").setCaption("Our Price");
items.addColumn(QuoteDetails::getStandardOvernight_listPrice).setId("son_list").setCaption("List Price");
items.addColumn(QuoteDetails::getStandardOvernight_ourPrice).setId("son_our").setCaption("Our Price");
items.addColumn(QuoteDetails::getTwoDayAM_listPrice).setId("2am_list").setCaption("List Price");
items.addColumn(QuoteDetails::getTwoDayAM_ourPrice).setId("2am_our").setCaption("Our Price");
items.addColumn(QuoteDetails::getTwoDay_listPrice).setId("2_list").setCaption("List Price");
items.addColumn(QuoteDetails::getTwoDay_ourPrice).setId("2_our").setCaption("Our Price");
items.addColumn(QuoteDetails::getExpressSaver_listPrice).setId("es_list").setCaption("List Price");
items.addColumn(QuoteDetails::getExpressSaver_ourPrice).setId("es_our").setCaption("Our Price");
HeaderRow groupingHeader = items.prependHeaderRow();
groupingHeader.join("item", "itemWeight", "itemLength", "itemWidth", "itemHeight", "itemQty");
groupingHeader.join("h_list", "h_our").setHtml("Home");
groupingHeader.join("g_list", "g_our").setHtml("Ground");
groupingHeader.join("fon_list", "fon_our").setHtml("First ON");
groupingHeader.join("pon_list", "pon_our").setHtml("Priority ON");
groupingHeader.join("son_list", "son_our").setHtml("Standard ON");
groupingHeader.join("2am_list", "2am_our").setHtml("2Day AM");
groupingHeader.join("2_list", "2_our").setHtml("2Day");
groupingHeader.join("es_list", "es_our").setHtml("3Day");
FooterRow totalFooter = items.appendFooterRow();
totalFooter.join("item", "itemWeight", "itemLength", "itemWidth", "itemHeight", "itemQty").setText("Total :");
totalFooter.getCell("h_list").setText("sum"); **<- how to sum column's data? Can I use lambda here? **
FooterRow deliveryDateFooter = items.appendFooterRow();
deliveryDateFooter.join("item", "itemWeight", "itemLength", "itemWidth", "itemHeight", "itemQty").setText("Delivery Date :");