-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi all,
My grid is binded to a SimpleListModel. The grid display the right infos, but when i change the content of the SimpleListModel (with the button), the grid do not synchronize. Why ?
p.s the problem is not in method rechercher2
Can u help me please ?
Steve
<?page title="Recherche de bons de travail" contentType="text/html;charset=UTF-8"?> <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?> <zk> <style src="/feuilleStyle.css" /> <zscript> import bonDeTravails.*; </zscript> <!-- SCRIPT : pour tri de colonnes --> <zscript src="Comp.zs"/> <zscript><![CDATA[ final int nbColonnes = 7; TabComp comp = new TabComp(nbColonnes); Comp [] asc = comp.getAsc(); Comp [] dsc = comp.getDsc(); ]]></zscript> <zscript> class Recherche { public static SimpleListModel rechercher( String motsRecherche ) { BonDeTravailDAO bonDAO = new BonDeTravailDAO(); String [] tabMotsRecherche = motsRecherche.split(" "); List bons = bonDAO.findAll(tabMotsRecherche); return new SimpleListModel(bons); } public static SimpleListModel rechercher2( ) { String motsRecherche ="RST"; BonDeTravailDAO bonDAO = new BonDeTravailDAO(); String [] tabMotsRecherche = motsRecherche.split(" "); List bons = bonDAO.findAll(tabMotsRecherche); return new SimpleListModel(bons); } } SimpleListModel modelBons = Recherche.rechercher("ERT"): </zscript> <window title="" border="none" width="920px" height="100"> <include src="/entete.zul"/> <window title="Recherche de bons de travail" border="normal" width="910px"> ... <button label="Rechercher" onClick="modelBons = Recherche.rechercher2()" width="160px" height="40px"/> <zscript> public class myRowRenderer implements RowRenderer { public void render ( Row row, Object data ){ Toolbarbutton toolBarButton = new Toolbarbutton(((BonDeTravail)data).getNoBon()); toolBarButton.setHref("bonDeTravail.zul?no="+((BonDeTravail)data).getNoBon()); toolBarButton.setParent(row); new Label(((BonDeTravail)data).getStatut()).setParent(row); new Label(((BonDeTravail)data).getGroupe()).setParent(row); new Label(((BonDeTravail)data).getPriorite()).setParent(row); new Label(((BonDeTravail)data).getDateOuvertureString()).setParent(row); new Label(((BonDeTravail)data).getEcheanceString()).setParent(row); new Label(((BonDeTravail)data).getNoActif().toString()).setParent(row); new Label(((BonDeTravail)data).getNomRepondant()).setParent(row); } } RowRenderer rowRenderer = new myRowRenderer(); </zscript> <grid width="840px" id="resultat" model="${modelBons}" rowRenderer="${rowRenderer}"> <columns> <column label="Numero" width="140px" align="center" /> <column label="Statut" width="100px" sortAscending="${asc[0]}" sortDescending="${dsc[0]}" align="center"/> <column label="Groupe" width="80px" sortAscending="${asc[1]}" sortDescending="${dsc[1]}" align="center"/> <column label="Priorite" width="60px" sortAscending="${asc[2]}" sortDescending="${dsc[2]}" align="center"/> <column label="Ouverture" width="90px" sortAscending="${asc[3]}" sortDescending="${dsc[3]}" align="center"/> <column label="Echeance" width="90px" sortAscending="${asc[4]}" sortDescending="${dsc[4]}" align="center"/> <column label="Actif" width="100px" sortAscending="${asc[5]}" sortDescending="${dsc[5]}" align="center"/> <column label="Repondant" width="160px" sortAscending="${asc[6]}" sortDescending="${dsc[6]}" align="center"/> </columns> </grid> </window> </window> </zk>
I tried this way too, it dont work neither (in fact it work on the first display but its never resynchronized...)
<?page title="Recherche de bons de travail" contentType="text/html;charset=UTF-8"?> <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?> <zk> <style src="/feuilleStyle.css" /> <zscript> import bonDeTravails.*; </zscript> <!-- SCRIPT : pour tri de colonnes --> <zscript src="Comp.zs"/> <zscript><![CDATA[ final int nbColonnes = 7; TabComp comp = new TabComp(nbColonnes); Comp [] asc = comp.getAsc(); Comp [] dsc = comp.getDsc(); ]]></zscript> <zscript> List bons; class Recherche { public static List rechercher( ) { String motsRecherche ="RST"; BonDeTravailDAO bonDAO = new BonDeTravailDAO(); String [] tabMotsRecherche = motsRecherche.split(" "); List bons = bonDAO.findAll(tabMotsRecherche); return bons; } } bons = Recherche.rechercher(); </zscript> <window title="" border="none" width="920px" height="100"> <include src="/entete.zul"/> <window title="Recherche de bons de travail" border="normal" width="910px"> ... <button label="Rechercher" onClick="bons.clear()" width="160px" height="40px"/> <zscript> public class myRowRenderer implements RowRenderer { public void render ( Row row, Object data ){ Toolbarbutton toolBarButton = new Toolbarbutton(((BonDeTravail)data).getNoBon()); toolBarButton.setHref("bonDeTravail.zul?no="+((BonDeTravail)data).getNoBon()); toolBarButton.setParent(row); new Label(((BonDeTravail)data).getStatut()).setParent(row); new Label(((BonDeTravail)data).getGroupe()).setParent(row); new Label(((BonDeTravail)data).getPriorite()).setParent(row); new Label(((BonDeTravail)data).getDateOuvertureString()).setParent(row); new Label(((BonDeTravail)data).getEcheanceString()).setParent(row); new Label(((BonDeTravail)data).getNoActif().toString()).setParent(row); new Label(((BonDeTravail)data).getNomRepondant()).setParent(row); } } RowRenderer rowRenderer = new myRowRenderer(); </zscript> <grid width="840px" id="resultat" model="@{bons}" rowRenderer="@{rowRenderer}"> <columns> <column label="Numero" width="140px" align="center" /> <column label="Statut" width="100px" sortAscending="${asc[0]}" sortDescending="${dsc[0]}" align="center"/> <column label="Groupe" width="80px" sortAscending="${asc[1]}" sortDescending="${dsc[1]}" align="center"/> <column label="Priorite" width="60px" sortAscending="${asc[2]}" sortDescending="${dsc[2]}" align="center"/> <column label="Ouverture" width="90px" sortAscending="${asc[3]}" sortDescending="${dsc[3]}" align="center"/> <column label="Echeance" width="90px" sortAscending="${asc[4]}" sortDescending="${dsc[4]}" align="center"/> <column label="Actif" width="100px" sortAscending="${asc[5]}" sortDescending="${dsc[5]}" align="center"/> <column label="Repondant" width="160px" sortAscending="${asc[6]}" sortDescending="${dsc[6]}" align="center"/> </columns> </grid> </window> </window> </zk>
The problem seem to be the grid is never redraw.
Because when i click the sorting buttons then the grid is syncronized.
How to force the redraw of the grid or page ?
I needed to call: binder.loadAll()
now its working
Hope it will help someone,
Steve
Asked: 2009-02-17 18:49:03 +0800
Seen: 236 times
Last updated: Feb 17 '09