如何在javafx中上下移动tableview中的特定列数据?

时间:2016-11-02 05:02:07

标签: mysql javafx

我有一个tableview,我可以使用此代码上下移动整行,而不是该行的特定列数据。

我的代码是。

ReadOnlyIntegerProperty selectedIndex = otableview.getSelectionModel().selectedIndexProperty();

        upaction.disableProperty().bind(selectedIndex.lessThanOrEqualTo(0));
        downaction.disableProperty().bind(Bindings.createBooleanBinding(() -> {
            int index = selectedIndex.get();
            return index < 0 || index + 1 >= otableview.getItems().size();
        }, selectedIndex, otableview.getItems()));

        upaction.setOnAction(evt -> {
            int index = otableview.getSelectionModel().getSelectedIndex();
            // swap items
            otableview.getItems().add(index - 1, otableview.getItems().remove(index));
            // select item at new position
            otableview.getSelectionModel().clearAndSelect(index - 1);

            // code to insert shuffle data in table start here
            try {

                int aaa = otableview.getSelectionModel().getSelectedIndex();
                InputMappingFieldModel item = otableview.getItems().get(aaa);
                headerTextField.setText(item.getImmapid().toString()); 
                System.out.println("headerTextField "+headerTextField);
                int mappingid = Integer.parseInt(headerTextField.getText());
                System.out.println("mapping id is "+mappingid);
                String sql="UPDATE IO_MAPPING iomap\n" +
                            "inner join OUTPUT_MAPPING om on(om.OUTPUT_MAPPING_ID=iomap.OUTPUT_MAPPING_ID)\n" +
                            "set iomap.OUTPUT_MAPPING_ID=?, om.FIELD_NAME=?\n" +
                            "where iomap.IO_ID="+mappingid;
                PreparedStatement psmt = conn.prepareStatement(sql);
                int omapid=item.getImmapid();
                String filedname = item.getFieldname();
                psmt.setInt(1, omapid);
                psmt.setString(2, filedname);
                psmt.executeUpdate();

            } catch (Exception ex) {
                ex.printStackTrace();
            }

    // code to insert shuffle data in table end here

            otableview.getColumns().setAll(ocolFileSrno, ocolFieldName, col_spaceswap, ocolFileOutputMappingId,ocolIo_id);//remove actionColUpdate from parameter list  
            otableview.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
            otableview.setItems(modelViewField);
            otableview.refresh();
        });

        downaction.setOnAction(evt -> {
            int index = otableview.getSelectionModel().getSelectedIndex();
            // swap items
            otableview.getItems().add(index + 1, otableview.getItems().remove(index));
            // select item at new position
            otableview.getSelectionModel().clearAndSelect(index + 1);

            otableview.refresh();
        });

我希望上下移动一个特定的列。即。我有4列,想要从tableview上下移动仅2列数据的数据 并且在上下移动单元格数据后,特定更新的tableview数据保存到同一系列的数据库中,但现在我可以上下移动整行 并且在GUI中上下调整数据并且它在数据库中没有反映......有人为我提供了简单的逻辑吗?

0 个答案:

没有答案