我有一个表格视图,其中几列是可编辑的,很少是不可编辑的。 当我键入第一列中的某个值并按Tab键时,将调用一个服务,并将返回的对象映射到表行。 我的要求是根据返回对象中的标志使不可编辑列可编辑(仅在我编辑过的行中)。 下面是调用服务和将返回的对象设置为行的代码。
colCtrNo.setOnEditCommit(new EventHandler<CellEditEvent<CtrRcptDlvryDTO, String>>() {
@Override
public void handle(CellEditEvent<CtrRcptDlvryDTO, String> t) {
CtrRcptDlvryDTO c = t.getTableView().getSelectionModel().getSelectedItem();
if(c.getCtrNo() != null && !"".equals(c.getCtrNo())){
c = GateIn.gatePassServiceRef.gateIn_validateRcptCtrFx(c, 1, 5090,null);
tblReceiptContent.set(t.getTablePosition().getRow(), c);
}
}
});
请建议如何在运行时根据标志将不可编辑的列转换为可编辑列。
答案 0 :(得分:1)
试试这个......
Col.setCellValueFactory(
new PropertyValueFactory<User, String>("Name"));
Col.setCellFactory(TextFieldTableCell.forTableColumn());
Col.setOnEditCommit(
new EventHandler<CellEditEvent<User, String>>() {
@Override
public void handle(CellEditEvent<User, String> t) {
((User) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setName(t.getNewValue());
}
}
);