2009-09-17 10 views
0

J'ai un doute concernant la pré-sélection (setSelectedIndex(index)) un élément dans un ListBox, Im en utilisant Spring + GWT.GWT - ListBox - pré-sélection d'un article

J'ai obtenu un dialogue qui contient un panneau, ce panneau a un FlexPanel, dans lequel j'ai mis un couple ListBox, ceci est rempli avec les données de ma base de données.

Mais ce panneau est pour les mises à jour d'une entité dans ma base de données, donc je voulais qu'il présélectionne les propriétés actuelles pour ces éléments, permettant à l'utilisateur de changer à volonté.

Je fais le remplissage dans la méthode de mise à jour du widget.

J'ai essayé de définir l'élément selected dans la méthode de mise à jour, mais cela me donne une erreur nulle.

J'ai cherché quelques endroits et il semble que le ListBox sont seulement remplis au moment exact de l'affichage. Ainsi, la présélection serait impossible.

J'ai pensé à un événement qui est déclenché lorsque la page est affichée.

onLoad() ne fonctionne pas ..

Quelqu'un a quelque chose à me aider ici?

Répondre

3

Je pense vraiment que peut définir la sélection avant qu'elle ne soit attachée et affichée, mais vous devez avoir ajouté les données avant de pouvoir sélectionner un index. Si cela est une boîte de sélection simple, vous pouvez écrire quelque chose comme ceci:

void updateListContent(MyDataObject selected, List<MyDataObject> list){ 
    for (MyDataObject anObject : list) { 
      theListBox.addItem(anObject.getTextToDisplay(), anObject.getKeyValueForList()); 
    } 
    theListBox.setSelectedIndex(list.indexOf(selected)); 
} 

Si cela est une boîte de sélection multiple quelque chose comme cela peut fonctionner:

void updateListContent(List<MyDataObject> allSelected, List<MyDataObject> list){ 
    for (MyDataObject anObject : list) { 
      theMultipleListBox.addItem(anObject.getTextToDisplay(), anObject.getKeyValueForList()); 
    } 
    for (MyDataObject selected : allSelected) { 
     theMultipleListBox.setItemSelected(list.indexOf(selected), true); 
    } 
} 

(Notez que je ne l'ai pas fait compilé ce Cela suppose que le ou les éléments sélectionnés sont réellement présents dans la liste des valeurs possibles, donc si vous ne pouvez pas être sûr de cela, vous devrez ajouter des vérifications de bornes.)

0

La présélection devrait également fonctionner avec la fonction setValue(). Ainsi, aucun code compliqué n'est nécessaire.

0
private void setSelectedValue(ListBox lBox, String str) { 
    String text = str; 
    int indexToFind = -1; 
    for (int i = 0; i < lBox.getItemCount(); i++) { 
     if (lBox.getValue(i).equals(text)) { 
      indexToFind = i; 
      break; 
     } 
    } 
    lBox.setSelectedIndex(indexToFind); 
}