Je suis l'exemple de Goolge sur comment ajouter ListBoxes/SelectionCells à un CellTable, mais je n'arrive pas à comprendre comment modifier le comportement afin que la correspondance ne soit pas faite avec la valeur de chaîne affichée.Identificateurs complexes GWT CellTable et ListBoxes
Les articles que j'affichage @SelectionCell ne sont pas uniques (autrement dit, il peut y avoir 2 éléments avec le même nom), donc je dois utiliser d'autres domaines associés à l'objet de savoir lequel a été sélectionné
for (IrrigationProgramDTO program: programOptions)
categoryNames.add(program.getName());
SelectionCell categoryCell = new SelectionCell(categoryNames);
Column<IrrigationGapDTO, String> categoryColumn = new Column<IrrigationGapDTO, String> (categoryCell) {
@Override
public String getValue(IrrigationGapDTO object) {
if (object.getProgramSelected()!=null)
return object.getProgramSelected().getName();
else
return "";
}
};
categoryColumn.setFieldUpdater(new FieldUpdater<IrrigationGapDTO, String>() {
public void update(int index, IrrigationGapDTO object, String value) {
for (IrrigationProgramDTO program: programOptions) {
//not valid as there could be more than 1 program with the same name
if (program.getName().equals(value)) {
object.setProgramSelected(program);
break;
}
}
}
La solution n ° 1 est celle que j'ai implémentée temporairement, mais comme vous dites que c'est sale, je n'aime pas que l'utilisateur voit des nombres étranges ajoutés au programme prénom. # 2 ne peut pas être utilisé car l'identifiant provient d'une base de données. Je vais vérifier # 3. – jpp1jpp1
# 3 est la meilleure option à mon avis. Je customiserais en utilisant une interface inestead d'un objet (si possible), pour réutiliser le code avec le futur DTO ... – gavioto