【发布时间】:2022-10-06 16:09:35
【问题描述】:
晚上好,我告诉你我的问题:
在 ZK 框架中,我需要在也被渲染的 Listbox 中使用动态渲染的 Combobox 的 onSelect 方法。
当我选择 Combobox 选项之一时,其内容应保存在 DocumentoVinculado 类的 observaciones 变量中。但是 onSelect 不起作用!我很感激任何帮助。附代码:
.zul
<zk>
<window id=\"myWindow\" apply=\"com.curso.controller.NewFileComposer\" title=\"Help\">
<listbox id=\"myListbox\">
<listhead>
<listheader label=\"NroGEBI\"></listheader>
<listheader label=\"Observaciones\"></listheader>
</listhead>
</listbox>
<label id=\"myLabel\"></label>
</window>
</zk>
作曲家/控制器
public class NewFileComposer extends BaseController {
private Window myWindow;
private Listbox myListbox;
private Combobox myCombobox0;
private Combobox myCombobox1;
private Label myLabel;
public void onSelect$myCombobox0() { myLabel.setValue(myCombobox0.getValue()); }
public void onSelect$myCombobox1() { myLabel.setValue(myCombobox1.getValue()); }
public void onCreate$myWindow() {
ListModelList<DocumentoVinculado> modelo = new ListModelList<>(crearLista());
myListbox.setModel(modelo);
myListbox.setItemRenderer(new NewFileRender());
}
private List<DocumentoVinculado> crearLista() {
List<DocumentoVinculado> docVinculados = new ArrayList<>();
docVinculados.add(new DocumentoVinculado(\"123GEBI1\", \" \"));
docVinculados.add(new DocumentoVinculado(\"123GEBI2\", \" \"));
return docVinculados;
}
}
使成为
public class NewFileRender implements ListitemRenderer {
@Override
public void render(Listitem item, Object data, int i) throws Exception {
DocumentoVinculado docVinculado = (DocumentoVinculado) data;
Listcell nroGebiCell = new Listcell(docVinculado.getNroGEBI());
nroGebiCell.setParent(item);
Listcell opcionesCell = new Listcell();
opcionesCell.appendChild(comboboxObservaciones(i));
item.appendChild(opcionesCell);
}
private Combobox comboboxObservaciones(int i) {
Combobox combobox = new Combobox();
List<String> listaDeOpciones = listaDeOpciones();
for(String opcion : listaDeOpciones) {
Comboitem myComboitem = new Comboitem();
myComboitem.setLabel(opcion);
myComboitem.setParent(combobox);
}
combobox.setId(\"myCombobox\" + i);
return combobox;
}
private List<String> listaDeOpciones() {
List<String> opciones = new ArrayList<>();
opciones.add(\" \");
opciones.add(\"Opcion1\");
opciones.add(\"Opcion2\");
return opciones;
}
}
感谢您的阅读。干杯!