0

grid invalidate

asked 2011-08-30 11:17:28 +0800

alexandre gravatar image alexandre
9

updated 2011-08-30 11:20:55 +0800

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>

delete flag offensive retag edit

2 Replies

Sort by ยป oldest newest

answered 2011-08-30 11:31:04 +0800

TonyQ gravatar image TonyQ
642
https://www.masterbranch....

updated 2011-08-30 11:32:43 +0800

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.


MyRowRenderer.java
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);
}
}


TestComposer.java
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;
}

}


index.zul
<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>

link publish delete flag offensive edit

answered 2011-08-30 11:53:40 +0800

alexandre gravatar image alexandre
9

updated 2011-08-30 11:55:00 +0800

tnks, this works well!!!

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: 2011-08-30 11:17:28 +0800

Seen: 278 times

Last updated: Aug 30 '11

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