-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi,
I have this listbox:
<listbox id="LBSeguimiento" mold="paging" pagingPosition="bottom" autopaging="true" width="99.8%" sizedByContent="true" span="4" vflex="true" model="@load(vm.beans)" selectedItem="@bind(vm.beanSeleccionado)"> <listhead sizable="true" > <listheader id = "LHEstado" label="_Estado" visible="true" sort="auto(estado)"/> <listheader id = "LHEntidad" label="_Entidad" visible="true" sort="auto(entidad)"/> <listheader id = "LHPais" label="_Pais" visible="true" sort="auto(pais)"/> <listheader id = "LHProvincia" label="_Provincia" visible="true" sort="auto(provincia)"/> <listheader id = "LHComarca" label="_Comarca" visible="true" sort="auto(comarca)"/> <listheader id = "LHpoblacion" label="_Poblacion" visible="true" sort="auto(poblacion)"/> <listheader id = "LHTipoServicio" label="_TipoServicio" visible="true" sort="auto(tipoServicio)"/> <listheader id = "LHEspecialidad" label="_Especialidad" visible="true" sort="auto(especialidad)"/> <listheader id = "LHProveedor" label="_Proveedor" visible="true" sort="auto(proveedor)"/> </listhead> <template name="model" var="item"> <listitem value="@load(item)" onDoubleClick="@command('DobleClickFila')" style="@load(item.registroNuevo eq 0 ? '' : 'background-color:orange')"> <listcell label="@load(item.estado) @converter(vm.myConverter)" style="text-align:center" /> <listcell label="@load(item.entidad)" tooltiptext="@load(item.entidad)" style="text-align:left"/> <listcell label="@load(item.pais)" tooltiptext="@load(item.pais)"/> <listcell label="@load(item.provincia)" tooltiptext="@load(item.provincia)"/> <listcell label="@load(item.comarca)" tooltiptext="@load(item.comarca)"/> <listcell label="@load(item.poblacion)" tooltiptext="@load(item.poblacion)"/> <listcell label="@load(item.tipoServicio)" tooltiptext="@load(item.tipoServicio)" style="@load(item.estiloServicio)"/> <listcell label="@load(item.especialidad)" tooltiptext="@load(item.especialidad)"/> <listcell label="@load(item.proveedor)" tooltiptext="@load(item.proveedor)"/> </listitem> </template> </listbox>
I have a footer with a button that opens a window that allows the user to set up the view of the listbox (its order and what columns user wants to be visibile).
When user closes that window it returns two array of listheaders: one with the visible ones and the other with the invisibles.
Setting them visibile/invisible is easy because I go over these two arrays and make columns visible/invisible deppeding on user selection.
But I don't know how to change the order of the visible columns. I tried using insertBefore() but it only changes the header not all the column.
Maybe I should change something related to the bean instead of the component???
Any idea???
Thank you!
Hi Neus,
have you seen our open-source library ZK-DL? It is published under LGPL. We have solved all these issues and provide the functionality to users as a default simple-to-use behavior. But the library doesn't support ZK6 yet, nowadays I am working on it so it should be done in couple says, I hope. If you want you can look at it and use it or just for an inspiration. The current version can be found on GitHub, ZK-DL project.
Anyway ... in old versions of ZK there was listitem used as a template and you had to catch it and modify it. In ZK 6 they are using component definition instead. I have not found a clear way how to get it so I have to use a java reflection to extract it from template.
comp.getTemplate("model")
I hope a helped you.
Regards,
Karel
Hi Karel,
ZK-DL looks great! And it resolve a lot of things I'm having trouble (filtering, columns configuration, extracting to excel...)
But as I am using ZK6 I think I can't use it, right?
I will wait until it is done for ZK 6 and now try to do something with the template...
Thank you!
Can reordering of column is possible with ZK-DL ,something which i want mentioned here See this Forum Question
Hi Xcemus i was trying to checkout ur project from svn but when i am trying to run mvn install i am getting this exception .
Failed to execute goal on project ZKDLTutorial: Could not resolve dependencies for project cz.datalite.zk-dl:ZKDLTutorial:war:1.3.0: Failed to collect dependencies for [org.springframework:spring-context:jar:3.0.5.RELEASE (compile), org.springframework:spring-orm:jar:3.0.5.RELEASE (compile), org.springframework:spring-web:jar:3.0.5.RELEASE (compile), org.springframework.security:spring-security-core:jar:3.0.5.RELEASE (compile), org.zkoss.zk:zk:jar:5.0.10 (compile), org.zkoss.zk:zul:jar:5.0.10 (compile), org.zkoss.zk:zhtml:jar:5.0.10 (compile), org.zkoss.common:zcommon:jar:5.0.10 (compile), org.zkoss.common:zweb:jar:5.0.10 (compile), org.zkoss.zkforge.el:zcommons-el:jar:1.1.0 (compile), cz.datalite.zk-dl:ZKComposer:jar:1.3.0 (compile), cz.datalite.zk-dl:SpringService:jar:1.3.0 (compile), cz.datalite.zk-dl:ZKDLComponents:jar:1.3.1 (compile), cz.datalite.zk-dl:ZKDLComponentsHibernateExt:jar:1.3.0 (compile), cz.datalite.zk-dl:ZKComponents:jar:1.3.0 (compile), cz.datalite.zk-dl:zkplus:jar:1.3.0 (compile), cz.datalite.zk-dl:ZKStatistics:jar:1.3.0 (compile), junit:junit:jar:4.8.1 (test), commons-dbcp:commons-dbcp:jar:1.2.1 (compile), commons-collections:commons-collections:jar:3.2.1 (compile), org.slf4j:slf4j-api:jar:1.5.8 (compile), log4j:log4j:jar:1.2.14 (compile), org.slf4j:slf4j-log4j12:jar:1.5.8 (compile), hsqldb:hsqldb:jar:1.8.0.7 (compile), cz.datalite.zk-dl:Selenium:jar:1.3.0 (compile)]: Failed to read artifact descriptor for cz.datalite.zk-dl:ZKComposer:jar:1.3.0: Could not transfer artifact cz.datalite.zk-dl:ZKComposer:pom:1.3.0 from/to jboss (http://repository.jboss.com/maven2): Access denied to: http://repository.jboss.com/maven2/cz/datalite/zk-dl/ZKComposer/1.3.0/ZKComposer-1.3.0.pom, ReasonPhrase:Forbidden. -> [Help 1]
Please help me I am really need ur help.
Hi Xcemus ,
When i am trying to run your example code Given Here Listbox - data driven components I am getting this Exception.
Source Codejava.lang.NoSuchMethodError: cz.datalite.zk.components.list.view.DLQuickFilter.setVariable(Ljava/lang/String;Ljava/lang/Object;Z)V cz.datalite.zk.components.list.view.DLQuickFilter.setController(DLQuickFilter.java:117) cz.datalite.zk.components.list.controller.impl.DLQuickFilterControllerImpl.<init>(DLQuickFilterControllerImpl.java:43) cz.datalite.zk.components.list.DLListboxGeneralController.initQuickFilter(DLListboxGeneralController.java:151) cz.datalite.zk.components.list.DLListboxGeneralController.doAfterCompose(DLListboxGeneralController.java:109) org.zkoss.zk.ui.impl.UiEngineImpl.doAfterCompose(UiEngineImpl.java:529) org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:824) org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770) org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679) org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643) org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:816) org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770) org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679) org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643) org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:816) org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770) org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679) org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:741) org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:701) org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643) org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:394) org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:316) org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:215) org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:135) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
an you please guide me to resolve this issue
I stored list of columns in an array and used EL expressions and this was straight forward.
<listbox id="campaign_grid" sizedByContent="true"
sclass="border:2px solid #ddd;" span="true" mold="default"
model="@bind(vm.campaignReport)" selectedIndex="@bind(vm.selectedIndex)" >
<listhead sizable="true" >
<!-- columnHeaders is a list of column header I would like
to display -->
<listheader label="${each}" forEach="${vm.columnHeaders}" />
</listhead>
<template name="model" var="row">
<listitem>
<zk forEach="${vm.columnHeaders}" >
<listcell>
<!--row is Map of column values -->
${row.get(each)}
</listcell>
</zk>
</listitem>
</template>
</listbox>
Hope this helps.
Asked: 2012-08-01 11:10:09 +0800
Seen: 310 times
Last updated: Apr 05 '13