setShouldSaveValue(true);
addShowValueHandler(new ShowValueHandler() {
@Override
public void onShowValue(ShowValueEvent event) {
CanvasItem item = (CanvasItem) event.getSource();
ListGrid grid = (ListGrid)item.getCanvas();
if (grid==null) return;
grid.deselectAllRecords();
String value = (String) event.getDisplayValue();
if (value==null) return;
RecordList recordList = grid.getDataAsRecordList();
int index = recordList.findIndex(item.getFieldName(), value);
grid.selectRecord(index);
}
});
setInitHandler(new FormItemInitHandler () {
@Override
public void onInit(FormItem item) {
ListGrid grid = new ListGrid();
grid.setWidth("*");
grid.setHeight("*");
grid.setLeaveScrollbarGap(false);
grid.setFields(((ListGridItem) item).getGridFields());
grid.setData(((ListGridItem)item).getGridData());
grid.setAutoFetchData(true);
grid.addDrawHandler(new DrawHandler() {
@Override
public void onDraw(DrawEvent event) {
ListGrid grid = (ListGrid)event.getSource();
RecordList data = grid.getDataAsRecordList();
CanvasItem item = grid.getCanvasItem();
String value = (String)item.getValue();
String fieldName = item.getFieldName();
if (value != null) grid.selectRecord(data.find(fieldName, value));
}
});
grid.addSelectionUpdatedHandler(new SelectionUpdatedHandler() {
@Override
public void onSelectionUpdated(SelectionUpdatedEvent event) {
ListGrid grid = (ListGrid) event.getSource();
CanvasItem item = grid.getCanvasItem();
ListGridRecord record = grid.getSelectedRecord();
if (record != null) {
item.storeValue(record.getAttribute(item.getFieldName()));
} else {
item.storeValue((com.smartgwt.client.data.Record)null);
}
}
});
((CanvasItem) item).setCanvas(grid);