javafx как обновить таблицу после добавления записи - PullRequest
0 голосов
/ 06 ноября 2018

я видел так много ответов, но мне это не подходит, потому что я использую цикл для генерации таблицы, а не определенного класса я хочу обновить таблицу, которая генерирует данные из цикла.

Я пытался обновить таблицу, но сейчас работает я попытался построить дату снова, но она дублирует таблицу

Здесь ячейки, сгенерированные циклом

            while(rs.next()){
                //Iterate Row
                 ObservableList<String> row = FXCollections.observableArrayList();
                for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){
                    //Iterate Column
                    row.add(rs.getString(i));
                }
                System.out.println("Row [1] added "+row );
                data.add(row);
                table.setItems(data);

            }    

Вот кнопка добавления

        buttonAdd.setOnAction(new EventHandler<ActionEvent>(){
        @Override
        public void handle(ActionEvent t){
            try {
                stmt.executeUpdate("INSERT into stock VALUES('"
                + fieldCategoryID.getText()+ "','" + fieldCategoryName.getText() + "','" + fieldAmount.getText() + "','" + fieldCostPrice.getText()+ "','" + fieldSellingPrice.getText()
                        + "','" + fieldCategoryProfit.getText()+ "','" + fieldSupplier.getText()+ "','" + fieldCategoryProfitRate.getText()+
                        "','" + fieldTotalCategoryProfit.getText()+"','" + fieldOnStock.getText()+ "')");

        content.getChildren().removeAll(table);
        table.refresh();
        content.getChildren().add(table);
        } catch (SQLException ex) {
                Logger.getLogger(Stock.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        });

Вот кнопка удаления

  buttonDelete.setOnAction(new EventHandler<ActionEvent>(){
        @Override
        public void handle(ActionEvent t){
            try {
                                Alert alertConfirmation = new 
table.getSelectionModel().getSelectedIndex();

                TablePosition pos = (TablePosition) table.getSelectionModel().getSelectedCells().get(0);
                            int row = pos.getRow();
                            TableColumn col = pos.getTableColumn();
                             String data = (String) col.getCellObservableValue(table.getItems().get(row)).getValue();
                String query = "DELETE FROM stock where category_code = ?";
                pst = con.prepareStatement(query); 
                pst.setString(1, data);
                pst.execute(); 
}

1 Ответ

0 голосов
/ 07 ноября 2018

Я добавляю метод обновления, который очищает данные observableList. Затем я снова объявляю Statement и ResultSet, затем снова добавляю строки

public void refreshTable() throws SQLException{
data.clear();
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
      rs = stmt.executeQuery("select * from stock");
      while(rs.next()){
                //Iterate Row
                  row = FXCollections.observableArrayList();
                for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){
                    //Iterate Column
                    row.add(rs.getString(i));
                }
                System.out.println("Row [1] added "+row );
                data.add(row);
                table.setItems(data);

            }   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...