0

Grid paging problem with Image display ....

asked 2010-05-17 02:02:36 +0800

vinhvo gravatar image vinhvo
369 3

In my grid I have a column likes this :
<toolbarbutton image="../../img/list.png"/>
At the 1st page of my grid , this image is displayed correctly. However, when i changed to another page of grid, this image disappears.
Was it a bug or am I missing something ?

delete flag offensive retag edit

7 Replies

Sort by ยป oldest newest

answered 2010-05-17 03:17:38 +0800

jimmyshiau gravatar image jimmyshiau
4921 5
http://www.zkoss.org/ ZK Team

Hi, vinhvo
Could you post a sample for reproduce it?

link publish delete flag offensive edit

answered 2010-05-17 04:58:11 +0800

vinhvo gravatar image vinhvo
369 3

Yes. Very quick one :
View:

<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="./workqueueWin"?>
<zk>


	<window border="none" id="workqueueWin">
		
		<grid mold="paging" pageSize="20" id="workQueueGrid">
			<columns>

			</columns>
			<rows></rows>
		</grid>
	</window>
</zk>



Composer:
public class WorkQueueController extends GenericForwardComposer{
	private Grid workQueueGrid;

public void onCreate$workqueueWin(Event evt) throws Exception {
		
		renderWorkQueueGrid();
		updateWorkQueueGrid();
		
	}
        private void renderWorkQueueGrid(){//because EL expression is evaluated before databinding. Therefore, it 's not possible to use databinding and EL
		Columns cols= workQueueGrid.getColumns();
		cols.getChildren().clear();
		cols.appendChild(new Column(""));
	
	}
	private void updateWorkQueueGrid() throws Exception{
		Rows rows= workQueueGrid.getRows();
		rows.getChildren().clear();
		for(int i=0;i<100;i++){
			Row row= new Row();
			Toolbarbutton kc= new Toolbarbutton();
			kc.setImage("../../img/list.png");
			kc.setStyle("background-color: transparent");
			row.appendChild(kc);
			rows.appendChild(row);
		}
	}
}

Only images in 1st page get displayed. Thank you.

link publish delete flag offensive edit

answered 2010-05-17 06:36:56 +0800

jimmyshiau gravatar image jimmyshiau
4921 5
http://www.zkoss.org/ ZK Team

updated 2010-05-17 06:41:17 +0800

I have tested your sample with ZK 5.0.2 and ZK 3.6.4 on FF and IE8
They worked well
My pictures put in WebContent
and set the image like below
kc.setImage("/img/ArrowLeft-16x16.png");

link publish delete flag offensive edit

answered 2010-05-17 06:55:32 +0800

jimmyshiau gravatar image jimmyshiau
4921 5
http://www.zkoss.org/ ZK Team

BTW, you can prepare your data in doBeforeCompose
then you can use databinding and EL
I create a sample

View:

<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="./workqueueWin"?>
<zk>
	<window border="none" id="workqueueWin" apply="ctrl.WorkQueueController">
		<grid mold="paging" pageSize="20" id="workQueueGrid" model="@{workqueueWin$WorkQueueController.data}">
			<columns>
			</columns>
			<rows >
				<row self="@{each=person}">
					<toolbarbutton label="@{person.name}"/>
				</row>
			</rows>
		</grid>
		<grid >
			<rows>
				<row  forEach="${workqueueWin$WorkQueueController.data}" >
					<toolbarbutton label="${each.name}" />
				</row>
			</rows>
		</grid>
	</window>
</zk>

Composer:

package ctrl;

import java.util.*;

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Page;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.metainfo.ComponentInfo;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;

public class WorkQueueController extends GenericForwardComposer {
	private Grid workQueueGrid;
	
	List<Person> data;

	@Override
	public ComponentInfo doBeforeCompose(Page page, Component parent,
			ComponentInfo compInfo) {
		initData();		
		return super.doBeforeCompose(page, parent, compInfo);
	}

	private void initData() {
		data = new ArrayList<Person>();
		
		data.add(new Person("Jimmy"));
		data.add(new Person("Katrina"));
	}
	
	public List<Person> getData(){
		return data;
	}
	
	public class Person{
		private String name;

		
		public Person(String name) {
			super();
			this.name = name;
		}

		public String getName() {
			return name;
		}
	}
}

link publish delete flag offensive edit

answered 2010-05-17 07:13:28 +0800

vinhvo gravatar image vinhvo
369 3

Thank you. I figured out . The reason is I gave it relative path : ../../img/list.png. Somehow, it is not working ...
BTW, your example is what I could not find Thank you very much.

link publish delete flag offensive edit

answered 2010-05-17 07:50:20 +0800

vinhvo gravatar image vinhvo
369 3

I faced timing problem to use your example.
I have to use onCreate event to init my data(to get data from map argument). And it seems that onCreate is executed after EL had finished. Is there any way to get around this ?

link publish delete flag offensive edit

answered 2010-05-17 08:14:22 +0800

jimmyshiau gravatar image jimmyshiau
4921 5
http://www.zkoss.org/ ZK Team

You can refer to sequence when loading a page and Introduction of ZK Composer

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: 2010-05-17 02:02:36 +0800

Seen: 610 times

Last updated: May 17 '10

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