2010-11-15 22 views
1
@UiHandler("addDynamicTextboxbutton") 
    void addMoreTextbox(ClickEvent event) { 


    textboxplaceholder.add(new TextBox(),"textboxplace"); 

} 

Lorsque vous cliquez sur le bouton addDynamicTextbox, cette méthode est exécutée et une nouvelle zone de texte est créée. comment avoir un autre bouton, de sorte que lorsque vous cliquez sur, obtiendrez toutes les valeurs de chacun des "textbox()"? ou est-il nécessaire de mettre le nom "new textbox (" name ")" pour que je puisse obtenir toutes leurs valeurs? Quelle est la meilleure façon de faire cela?gwt dynamic added textbox

Répondre

2

Si textboxplaceholder est et prolonger d'un ComplexPanel, par exemple FlowPanel vous pouvez simplement itérer sur les enfants du FlowPanel:

for (Widget w: textboxplaceholder) { 
    if (w instanceof TextBox) { 
    // do something value: ((TextBox)w).getValue(); 
    } 
} 
1

Vous pouvez utiliser une collection pour stocker le TextBox nouvellement ajouté à partir duquel vous pourrez obtenir toutes les valeurs ultérieurement. Quelque chose comme ceci:

public class Test extends Composite { 

    private static TestUiBinder uiBinder = GWT.create(TestUiBinder.class); 

    interface TestUiBinder extends UiBinder<Widget, Test> {} 

    @UiField 
    FlowPanel textboxplaceholder; 
    @UiField 
    Button addDynamicTextboxbutton; 
    private LinkedList<TextBox> boxes; 

    public Test() { 
     initWidget(uiBinder.createAndBindUi(this)); 
     boxes = new LinkedList<TextBox>(); 
    } 

    @UiHandler("addDynamicTextboxbutton") 
    void addMoreTextbox(ClickEvent event) { 
     TextBox box = new TextBox(); 
     textboxplaceholder.add(box); 
     boxes.add(box); 
    } 
} 

itérer sur les boîtes stockées dans boxes pour obtenir toutes les valeurs.