-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi,
how can i make the user select only a cell,not the whole row in a listbox?
or should i use different component?
thanks.
You can add any component you want into a grid cell, I have a few different grids that I create dynamically in java and use buttons. But I use css classes so that you only see an image instead of a traditional button, but you can do whatever you want.
The sample code below is the render method from my GridRowRenderer which implements ZK's RowRenderer.
The data in this case is a 2 dimensional array of users so that my grid has 2 columns of data. If you follow along in the code
you can see that depending upon if images are found in the db or not I add different component types into each grid column and row.
The sample code below the render method from my GridRowRenderer which implements RowRenderer. The data in this case is a 2 dimensional array so that my grid has 2 columns of data. If you follow along in the code you can see that depending upon if images are found etc. I add different component types into each grid column and row. Here are the two .css classes used by this code : .userButton { border: none; font-size: xx-small; font-weight: normal; background : transparent; font : icon; } .unknownUserImage { background : URL(./images/user/UnkownUserSmall.jpg) no-repeat center; border: none; font: icon; font-size:xsmall; height : 32px; width : 32px; } public void render(Row row, Object rowData) throws Exception { try { // for a user gird, we are expecting 2 rows of data, a 2 dimensional array. DHeUser[] userRowData = (DHeUser[])rowData; // 2 Columns of data DHeUser user1 = userRowData[0]; DHeUser user2 = userRowData[1]; if (user1 != null) { // Look in the database for an image for this user org.zkoss.image.Image zkImage = DHzZKUtilities.getZKImageForUser(user1); // Create the button that is going in column1 and give it a label equal to the username Button userButton1 = new Button(user1.getUserName()); // If we found an image for this user we set it into the button if (zkImage != null) { userButton1.setImageContent(zkImage); userButton1.setSclass("userButton"); userButton1.setParent(row); } else // If we don't have an image in the DB for this user. We use the unknownUserButton sclass { Vbox vbox = new Vbox(); vbox.setPack("center"); vbox.setAlign("center"); userButton1.setSclass("unknownUserButton"); userButton1.setLabel(""); userButton1.setParent(vbox); Label buttonLabel = new Label(user1.getUserName()); buttonLabel.setSclass("dhUISmallIconFont"); buttonLabel.setParent(vbox); vbox.setParent(row); } userButton1.setWidth(new String(componentWidth + "px")); userButton1.setId("usergridbuttonColumn1" + System.currentTimeMillis() + DHzZKUtilities.seperator + user1.getId()); userButton1.addEventListener("onClick", userSelectListener); userButton1.setOrient("vertical"); } else { Label emptyLabel = new Label(); emptyLabel.setParent(row); } if (user2 != null) { org.zkoss.image.Image zkImage = DHzZKUtilities.getZKImageForUser(user2); Button userButton2 = new Button(user2.getUserName()); if (zkImage != null) { userButton2.setImageContent(zkImage); userButton2.setSclass("userButton"); userButton2.setParent(row); } else { Vbox vbox = new Vbox(); vbox.setPack("center"); vbox.setAlign("center"); userButton2.setSclass("unknownUserButton"); userButton2.setLabel(""); userButton2.setParent(vbox); Label buttonLabel = new Label(user2.getUserName()); buttonLabel.setSclass("dhUISmallIconFont"); buttonLabel.setParent(vbox); vbox.setParent(row); } userButton2.setWidth(new String(componentWidth + "px")); userButton2.setId("usergridbuttonColumn2" + System.currentTimeMillis() + DHzZKUtilities.seperator + user2.getId()); userButton2.addEventListener("onClick", userSelectListener); userButton2.setOrient("vertical"); } else { Label emptyLabel = new Label(); emptyLabel.setParent(row); } } catch(Exception e) { logger.error("DHzUserGridRowRenderer render method. Exception caught : " + e.getMessage(),e); throw e; } }
Asked: 2008-07-22 10:28:51 +0800
Seen: 340 times
Last updated: Nov 28 '08