我的Table里面放的是editable,我想对其中的输入控件进行操控,比如 可见,是否可用 等等,我在后台怎么能获取到这个控件并对其进行操控
比如我想用户在输入500的时候,输入框就会变成禁用状态
我查了下,似乎没有太好的办法。监听 ItemPropertyChangeEvent
事件:
@Subscribe(id = "productLinesDc", target = Target.DATA_CONTAINER)
public void onProductLinesDcItemPropertyChange(final InstanceContainer.ItemPropertyChangeEvent<ProductLine> event) {
// 拿到table 的 Vaadin组件
var jmixTable = productLinesTable.unwrap(JmixTable.class);
// Vaadin组件内部的所有组件
var it = jmixTable.iterator();
while (it.hasNext()) {
var fw = it.next();
if (fw instanceof EditableColumnFieldWrapper efw) {
var field = efw.iterator().next();
// 这里需要根据field的类型做不同的处理
if(field instanceof JmixTextField jtf) {
// 然后对于不同的textfield,如何判断是哪一列,似乎没有太好的办法。只能用 requiredError message
if (jtf.getRequiredError().toLowerCase().startsWith(event.getProperty()) &&
jtf.getValue().equals("500")) { // 这里会设置该列所有满足条件的field
jtf.setEnabled(false);
}
}
}
}
}
你好,谢谢