2017-08-28 7 views
1

Je développe une application où j'ai le bouton Modifier pour modifier le compte. Et quand je modifie le compte, la grille devrait être mise à jour avec de nouvelles informations. Mais cela se produit après que j'aie un autre point de vue et que je revienne ensuite. Mais je veux voir que les informations mises à jour immédiatement après que l'utilisateur clique sur le bouton soumettre dans le formulaire d'édition. Donc, je ne peux pas trouver le moyen de rafraîchir ma grille. Je l'ai googlé mais rien n'était utile (comme grid.getView.refresh etc). Ceci est ma classe et dans la méthode getToolbar est logique qui doit être fait lorsque l'utilisateur cliquez sur le bouton soumettre:Comment rafraîchir Grid après la mise à jour dans GWT?

@Override 
    protected void onRender(Element parent, int index) { 
     super.onRender(parent, index); 
     setLayout(new FitLayout()); 
     setBorders(false); 
     initTable(); 

    } 

    protected void initTable() { 
     getToolBar(); 
     initGrid(); 

     tableContainer = new ContentPanel(); 
     tableContainer.setBorders(false); 
     tableContainer.setBodyBorder(false); 
     tableContainer.setHeaderVisible(false); 
     tableContainer.setTopComponent(accountsToolBar); 
     tableContainer.setScrollMode(Scroll.AUTO);  
     tableContainer.setLayout(new FitLayout()); 
     tableContainer.add(grid); 
     add(tableContainer); 

    } 

    private void initGrid() { 
     RpcProxy<ListLoadResult<GwtGroupedNVPair>> proxy = new RpcProxy<ListLoadResult<GwtGroupedNVPair>>() { 

      @Override 
      protected void load(Object loadConfig, final AsyncCallback<ListLoadResult<GwtGroupedNVPair>> callback) { 
       gwtAccountService.getAccountInfo(selectedAccount.getId(), callback); 
      } 
     }; 

     loader = new BaseListLoader<ListLoadResult<GwtGroupedNVPair>>(proxy); 
     loader.addLoadListener(new DataLoadListener()); 

     store = new GroupingStore<GwtGroupedNVPair>(loader); 
     store.groupBy("groupLoc"); 

     ColumnConfig name = new ColumnConfig("nameLoc", MSGS.devicePropName(), 50); 
     ColumnConfig value = new ColumnConfig("value", MSGS.devicePropValue(), 50); 

     List<ColumnConfig> config = new ArrayList<ColumnConfig>(); 
     config.add(name); 
     config.add(value); 

     ColumnModel cm = new ColumnModel(config); 
     GroupingView view = new GroupingView(); 
     view.setShowGroupedColumn(false); 
     view.setForceFit(true); 
     view.setEmptyText(MSGS.accountNoSelectedAccount()); 

     grid = new Grid<GwtGroupedNVPair>(store, cm); 
     grid.setView(view); 
     grid.setBorders(false); 
     grid.setLoadMask(true); 
     grid.setStripeRows(true); 
     grid.setTrackMouseOver(false); 
     grid.disableTextSelection(false); 
     updateAccountInfo(); 
     add(grid); 
    } 

    protected void updateAccountInfo() { 
     if (store != null) { 
      store.removeAll(); 
      loader.load(); 
     } 
    } 

    private ToolBar getsToolBar() { 

     accountsToolBar = new ToolBar(); 
     accountsToolBar.setHeight("27px"); 
     if (currentSession.hasAccountUpdatePermission()) { 
      // 
      // Edit Account Button 
      editButton = new EditButton(new SelectionListener<ButtonEvent>() { 

       @Override 
       public void componentSelected(ButtonEvent ce) { 
        if (selectedAccount != null) { 
         final AccountForm accountForm = new AccountForm(currentSession, selectedAccount); 
         accountForm.addListener(Events.Hide, new Listener<ComponentEvent>() { 

          public void handleEvent(ComponentEvent be) { 


           setAccount(accountForm.getExistingAccount()); 
           refresh(); 

          } 
         }); 
         accountForm.show(); 
        } 
       } 
      }); 
      editButton.setEnabled(true); 

      accountsToolBar.add(editButton); 
      accountsToolBar.add(new SeparatorToolItem()); 
     } 
     return accountsToolBar; 
    } 

    public void refresh() { 
     if (initialized && dirty && selectedAccount != null) { 
      updateAccountInfo(); 
      dirty = false; 
     } 
     if (selectedAccount != null) { 
      if (formPanel != null) { 
       formPanel.show(); 
      } 
      editButton.setEnabled(true); 
     } else { 
      if (formPanel != null) { 
       formPanel.hide(); 
      } 
      editButton.setEnabled(false); 
     } 

    } 

ce que quelqu'un a idée comment rafraîchir la grille lorsque l'utilisateur clique sur soumettre?

Répondre

0

Vous devez valider vos modifications au modèle:

store.commitChanges(); 
0

Si vous savez que votre magasin est changé alors essayez:

grid.getView().refresh(true);