我有一个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中上下调整数据并且它在数据库中没有反映......有人为我提供了简单的逻辑吗?