ZK - Open Source Ajax Java FrameworkZK - Open Source Ajax Java Framework

onblur beside first row not function

ibsolution
18 Dec 2008 15:28:36 GMT
18 Dec 2008 15:28:36 GMT

hai,

is this a bug ?, onblur function can not be fire only one row can execute onBlur Event


java file

package ibs.error;

import java.math.BigDecimal;
import java.util.Iterator;

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.ComponentNotFoundException;
import org.zkoss.zk.ui.Desktop;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.Page;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.util.Initiator;
import org.zkoss.zul.Decimalbox;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Label;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.Row;
import org.zkoss.zul.RowRenderer;
import org.zkoss.zul.SimpleListModel;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

public class testing extends Window implements Initiator{

	public Component getComponent(String compId){
		Component comp = null;
		try{
			comp = getFellow(compId);
		}catch(ComponentNotFoundException e1){
			Desktop dsk = Executions.getCurrent().getDesktop();
			Iterator<Component> iter = dsk.getComponents().iterator();
			while(iter.hasNext()){
				comp = (Component)iter.next();
				if (comp.getId().indexOf("z_") == -1){
					if (comp.getId().equals(compId)){
						break;
					}
				}
				comp = null;
			}
		}
		return  comp;
	}

	private void setDisplayGrid(){
		Grid mygrid = (Grid)getComponent("itemlist");
		String[][] rowgrid = new String[2][2];
		ListModel strset = null;
			rowgrid[0][0]= "a";
			rowgrid[1][0]= "b";
			strset = new SimpleListModel(rowgrid);

		if (strset != null){
			mygrid.setModel(strset);
			mygrid.setRowRenderer(new rowRenderLstItem());
		}
	}

	class rowRenderLstItem implements RowRenderer{ 
		private int idx=0;
		public void render(Row row, java.lang.Object data) throws Exception {
			update(new Textbox("aaa"),row);
		}
		private void update(Textbox obj,Row row){
			obj.setId("a".concat(String.valueOf(++idx)));
			obj.setParent(row);
			obj.addEventListener("onBlur", new EventListener(){
				public void onEvent(Event event)
				{
					Label lbl = (Label)getComponent("test");
					lbl.setValue(((Textbox)getComponent("a".concat(String.valueOf(idx)))).getValue());
				}
			});			
		}		

	}

	public void doAfterCompose(Page page) throws Exception {
		// TODO Auto-generated method stub

	}

	public boolean doCatch(Throwable throwable) throws Exception {
		// TODO Auto-generated method stub
		return false;
	}

	public void doFinally() throws Exception {
		// TODO Auto-generated method stub
		setDisplayGrid();
	}

	public void doInit(Page page, Object[] aobj) throws Exception {
		// TODO Auto-generated method stub

	}	
}

zul file

<?init class="ibs.error.testing" ?>

<window id="wnditemlist" title="List Item" mode="overlapped"
	closable="true"  use="ibs.error.testing">
	<grid id="itemlist" mold="paging" pageSize="4">
		<columns>
			<column label="Kode" />
			
		</columns>
		<rows>
			<row></row>
		</rows>		
	</grid>
	<label id="test"/>
</window>

TIA,

Andy Susanto

PeterKuo
19 Dec 2008 01:03:51 GMT
19 Dec 2008 01:03:51 GMT

I'm not sure your problem.
But I changed your code to

public void onEvent(Event event)
{
	Label lbl = (Label)getComponent("test");
	lbl.setValue(String.valueOf(idx++));
}

I think onBlur happened for each row.

By the way, your code is well structured and demoed the intrinsic simple beauty of ZK. We may modify it to a good example code for developer's guide.

Thank you.

ibsolution
20 Dec 2008 00:36:08 GMT
20 Dec 2008 00:36:08 GMT

hai,

i love that my code can be an example.

i solve my problem not, i just getTarget from event method

Thanks,

Andy Susanto