Hi guys. I'm developing a UI with SmartGWT. I have two problems with ListGrid.
1- I can't implement data paging. I fetch datas from an xml file connected with a DataSource. When I call listgrid.setData(DataSource.getInstance());
I would fetch a limit set of data. I tried with litsgrid.fetchmode(fetchmode.PAGED) but it doesn't work.
2- In each row, I'd want a label above the value field which explain what field is it. I have grid.showHeader(false) thus the fields names in the listgrid's header should appear in each row above the value field. I have extended createRecordComponent method and it works, but the value of field appears twice.
this is the code of the class wich I talk above
1- I can't implement data paging. I fetch datas from an xml file connected with a DataSource. When I call listgrid.setData(DataSource.getInstance());
I would fetch a limit set of data. I tried with litsgrid.fetchmode(fetchmode.PAGED) but it doesn't work.
2- In each row, I'd want a label above the value field which explain what field is it. I have grid.showHeader(false) thus the fields names in the listgrid's header should appear in each row above the value field. I have extended createRecordComponent method and it works, but the value of field appears twice.
this is the code of the class wich I talk above
Code:
package org.ewr.client;
import java.util.Date;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.FetchMode;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Button;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.ImgButton;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.grid.CellFormatter;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VStack;
public class RaceListGrid extends Composite{
private ListGridField raceIdField;
private ListGridField typeField;
private ListGridField dateField;
private ListGridField membersField;
private ListGridField distanceField;
private ListGridField friendsField;
private ListGridField buttonsField;
public RaceListGrid(){
//RACEID
raceIdField = new ListGridField("raceId","");
raceIdField.setHidden(true);
//TYPE
typeField = new ListGridField("type","");
typeField.setType(ListGridFieldType.IMAGE);
typeField.setAlign(Alignment.CENTER );
typeField.setImageSize(50);
typeField.setImageURLSuffix(".png");
//DATE
//dateField = new ListGridField("date", "Data Inizio");
//final DateTimeFormat dateFormatter = DateTimeFormat.getFormat("dd/mm/yy hh:MM:ss");
/*dateField.setCellFormatter(new CellFormatter() {
@Override
public String format(Object value, ListGridRecord record, int rowNum,int colNum) {
if (value != null) {
try {
Date dateValue = (Date) value;
return dateFormatter.format(dateValue);
} catch (Exception e) {
return value.toString();
}
} else {
return "";
}
}
});
*/
//MEMBERS
membersField = new ListGridField("members","");
//DISTANCE
distanceField = new ListGridField("distance","");
distanceField.setCellFormatter(new CellFormatter() {
@Override
public String format(Object value, ListGridRecord record, int rowNum,
int colNum) {
// TODO Auto-generated method stub
return value.toString()+" km";
}
});
//FRIENDS
friendsField = new ListGridField("friends","");
//BUTTONS
buttonsField = new ListGridField("buttons","");
buttonsField.setWidth(100);
final ListGrid raceGrid = new ListGrid() {
@Override
protected Canvas createRecordComponent(final ListGridRecord record, Integer colNum) {
String fieldName = this.getFieldName(colNum);
if (fieldName.equals("members")){
VStack contentDiv = new VStack();
HTMLFlow label = new HTMLFlow();
label.setContents("<span>Iscritti<span></br>"+record.getAttribute("members"));
contentDiv.addMember(label);
return contentDiv;
}else if (fieldName.equals("buttons")) {
VStack contentDiv = new VStack();
Button subscribeButton = new Button("Iscriviti");
HLayout recordCanvas = new HLayout(3);
recordCanvas.setHeight(22);
recordCanvas.setAlign(Alignment.CENTER);
ImgButton editImg = new ImgButton();
editImg.setShowDown(false);
editImg.setShowRollOver(false);
editImg.setLayoutAlign(Alignment.CENTER);
editImg.setSrc("fb_share.png");
editImg.setPrompt("Edit Comments");
editImg.setHeight(16);
editImg.setWidth(16);
editImg.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
SC.say("Edit Comment Icon Clicked for country : " + record.getAttribute("members"));
}
});
ImgButton chartImg = new ImgButton();
chartImg.setShowDown(false);
chartImg.setShowRollOver(false);
chartImg.setAlign(Alignment.CENTER);
chartImg.setSrc("fb_like.png");
chartImg.setPrompt("View Chart");
chartImg.setHeight(16);
chartImg.setWidth(16);
chartImg.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
SC.say("Chart Icon Clicked for country : " + record.getAttribute("members"));
}
});
recordCanvas.addMember(editImg);
recordCanvas.addMember(chartImg);
contentDiv.addMember(subscribeButton);
contentDiv.addMember(recordCanvas);
return contentDiv;
} else {
return null;
}
}
};
raceGrid.setShowRecordComponents(true);
raceGrid.setShowRecordComponentsByCell(true);
raceGrid.setDataSource(RaceData.getInstance());
raceGrid.setAutoFetchData(true);
raceGrid.setDataPageSize(5);
raceGrid.setDrawAllMaxCells(5);
raceGrid.setCanResizeFields(false);
raceGrid.getCanMultiSort();
raceGrid.getCanSort();
raceGrid.setSize("580","250");
raceGrid.setCellPadding(5);
raceGrid.setCellHeight(20);
raceGrid.setDataFetchMode(FetchMode.PAGED);
raceGrid.setAlign(Alignment.CENTER);
raceGrid.setFields(raceIdField, typeField, membersField, distanceField, friendsField,buttonsField);
raceGrid.addRecordClickHandler(new RecordClickHandler(){
@Override
public void onRecordClick(RecordClickEvent event) {
SC.say("Click Record : " + event.getRecord().getAttribute("members")+event.getRecord().getAttribute("date")+event.getRecord().getAttribute("friends"));
}
});
initWidget(raceGrid);
}
}