0

Help : My grid do not synchronize when i modify the binded SimpleListModel

asked 2009-02-17 18:49:03 +0800

bob007 gravatar image bob007
384 3 4

updated 2009-02-17 18:59:33 +0800

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>

delete flag offensive retag edit

3 Replies

Sort by ยป oldest newest

answered 2009-02-17 19:49:14 +0800

bob007 gravatar image bob007
384 3 4

updated 2009-02-17 19:51:56 +0800

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>

link publish delete flag offensive edit

answered 2009-02-17 19:56:55 +0800

bob007 gravatar image bob007
384 3 4

updated 2009-02-17 20:07:46 +0800

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 ?

link publish delete flag offensive edit

answered 2009-02-17 21:09:46 +0800

bob007 gravatar image bob007
384 3 4

updated 2009-02-17 21:10:24 +0800

I needed to call: binder.loadAll()
now its working

Hope it will help someone,
Steve

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2009-02-17 18:49:03 +0800

Seen: 236 times

Last updated: Feb 17 '09

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More