2013-09-27 6 views
3

Scénario: J'ai une fenêtre parente appelée EditClientDeatils.fxm l et j'ai un TableView à ce sujet. Je suis en train d'éditer ces résultats de ligne en créant une autre fenêtre nommée UserDetails.fxml et en remplissant les données de ligne à ces champs FXML, maintenant après l'édition de ma deuxième fenêtre, Si je sauve je dois mettre à jour la table parente avec les dernières données. pas rafraîchir la table du tout. Mais quand j'ai débogué ma liste de table est mise à jour avec les dernières données et ne montre pas cela dans la fenêtre. Alors, comment puis-je mettre à jour ma vue de table depuis un autre contrôleur?Parent Table View Mise à jour De l'enfant fxml

Dans la fenêtre enfant, je charge le parent comme ceci.

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("EditClientDetails.fxml")); 
       EditClientDetailsController fooController = (EditClientDetailsController) fxmlLoader.getController(); 
       try { 
        fxmlLoader.load(); 
       } catch (IOException ex) { 
        Logger.getLogger(NewUserController.class.getName()).log(Level.SEVERE, null, ex); 
       } 

Et dans ma classe mère méthode initialize ayant sous le code:

@Override public void initialize (url URL, ResourceBundle rb) {

fNameCol.setCellValueFactory(
      new PropertyValueFactory<AtUser, String>("clientFirstName")); 
    lNameCol.setCellValueFactory(
      new PropertyValueFactory<AtUser, String>("clientLastName")); 
    addressCol.setCellValueFactory(
      new PropertyValueFactory<AtUser, String>("clientAddress")); 
    mobileCol.setCellValueFactory(
      new PropertyValueFactory<AtUser, String>("clientMobileNumber")); 
    emailCol.setCellValueFactory(
      new PropertyValueFactory<AtUser, String>("clientEmailID")); 
    catagoryCol.setCellValueFactory(
      new PropertyValueFactory<AtUser, String>("clientTypeCode")); 
    genderCol.setCellValueFactory(
      new PropertyValueFactory<AtUser, String>("gender")); 

    editSaveAction.setSortable(false); 

    editSaveAction.setCellValueFactory(
      new Callback<TableColumn.CellDataFeatures<AtUser, Boolean>, 
      ObservableValue<Boolean>>() { 

     @Override 
     public ObservableValue<Boolean> call(TableColumn.CellDataFeatures<AtUser, Boolean> p) { 
      return new SimpleBooleanProperty(p.getValue() != null); 
     } 
    }); 

    editSaveAction.setCellFactory(
      new Callback<TableColumn<AtUser, Boolean>, TableCell<AtUser, Boolean>>() { 

     @Override 
     public TableCell<AtUser, Boolean> call(TableColumn<AtUser, Boolean> p) { 
      return new ClientButtonCell(customerTable); 
     } 

    }); 
    // Add filtered data to the table 

    customerTable.setItems(filteredData); 

    // Listen for text changes in the filter text field 
    filterField.textProperty().addListener(new ChangeListener<String>() { 
     @Override 
     public void changed(ObservableValue<? extends String> observable, 
       String oldValue, String newValue) { 

      updateFilteredData(); 
     } 
    }); 

} 

Quand je suis débogage

customerTable.setItems(filteredData); 

ce filteredData contient mon req données saisies mais ne venant pas sur Windows. s'il vous plaît signaler si j'ai raté quelque chose.

+0

c'est-à-dire ce n'est pas rafraîchissant? – Magcus

+0

Oui, il n'est pas rafraîchissant – Firu

Répondre

0

J'ai eu le même problème, et j'ai trouvé ce travail à peu près, pour le forcer à rafraîchir. Après la modification de la liste des éléments de la table,

table.getColumns().get(0).setVisible(false); 
table.getColumns().get(0).setVisible(true); 

+0

:(Ne fonctionne pas pour moi .. – Firu

+0

pouvez-vous poster votre code afin que je puisse jeter un oeil à elle? Le tout ce que je veux dire – Magcus

Questions connexes