-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Im trying to refresh the grid.
can anyone help with this?
<window border="normal" title="Test grid"> <vbox> <vbox> <hbox><textbox id="txtSearch" width="400px" /><button label="Pesquisar" onClick="testGridFunction()" width="85px" /></hbox> </vbox> <vbox id="resultados"> <grid width="485px" fixedLayout="true" id="gridTest"> <columns> <column label="Name"/> </columns> <rows> <row align="left" forEach="${listTest}"> <label value="${each.name}"/> </row> </rows> </grid> </vbox> </vbox> <zscript> <![CDATA[ void testGridFunction(){ java.util.List result = new java.util.ArrayList(); Test test1 = new Test(); test1.setName("test"); Test test2 = new Test(); test2.setName("test"); result.add(test1); result.add(test2); session.setAttribute("listTest", result); gridTest.invalidate(); } ]]> </zscript> </window>
Hi ,
It's hard and worthless for applying a EL again just for a grid updating.
My suggestion is to use ListModel and RowRender to make your job easier. :)
Here's a simple sample for you , you could try it online directly and see if that's what you need.
package j2vah9aj$v5;import org.zkoss.zk.ui.*;
import org.zkoss.zk.ui.event.*;
import org.zkoss.zk.ui.util.*;
import org.zkoss.zk.ui.ext.*;
import org.zkoss.zk.au.*;
import org.zkoss.zk.au.out.*;
import org.zkoss.zul.*;
public class MyRowRenderer implements RowRenderer {
public void render(final Row row, final java.lang.Object data) {
String[] ary = (String[]) data;
new Label(ary[0]).setParent(row);
new Label(ary[1]).setParent(row);
new Label(ary[2]).setParent(row);
}
}
package j2vah9aj$v5;import org.zkoss.zk.ui.*;
import org.zkoss.zk.ui.event.*;
import org.zkoss.zk.ui.util.*;
import org.zkoss.zk.ui.ext.*;
import org.zkoss.zk.au.*;
import org.zkoss.zk.au.out.*;
import org.zkoss.zul.*;
import java.util.*;public class TestComposer extends GenericForwardComposer{
private Grid inboxGrid;
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
inboxGrid.setModel(new ListModelList(getData()));}
public void onClick$refreshBtn(Event e){
inboxGrid.setModel(new ListModelList(getUpdatedData()));
}/* simply return a small model here , you could read data from database for your own implementation.*/
private List<String[]> getData(){
ArrayList<String[]> list= new ArrayList<String[]>();
list.add(new String[]{"Test Mail1","TonyQ", "10k"});
list.add(new String[]{"Test Mail12","Ryan", "100k"});
list.add(new String[]{"Test Mail13","Simon", "15k"});
list.add(new String[]{"Test Mail14","Jimmy", "5k"});
return list;
}private List<String[]> getUpdatedData(){
ArrayList<String[]> list= new ArrayList<String[]>();
list.add(new String[]{"Test Mail1-updated","TonyQ", "10k"});
list.add(new String[]{"Test Mail12-updated","Ryan", "100k"});
list.add(new String[]{"Test Mail13-updated","Simon", "15k"});
list.add(new String[]{"Test Mail14-updated","Jimmy", "5k"});
return list;
}
}
<zk>
<div apply="j2vah9aj$v5.TestComposer">
<grid id="inboxGrid" height="350px"
rowRenderer="j2vah9aj$v5.MyRowRenderer"
emptyMessage="Nothing in Inbox.">
<columns>
<column label="Subject" />
<column width="150px" label="Received" />
<column width="80px" label="Size" />
</columns>
</grid>
<button label="updated data and refresh" id="refreshBtn" />
</div>
</zk>
tnks, this works well!!!
Asked: 2011-08-30 11:17:28 +0800
Seen: 278 times
Last updated: Aug 30 '11