0

Modify a Node of tree

asked 2009-10-20 05:15:19 +0800

cros gravatar image cros
153

updated 2009-10-20 05:16:13 +0800

Hey guys,

I have a tree strucure and a textbox.
I want to modify the nodename (ex: Hosp 1.1 ) with the data entered in textbox (ex : data is "abhi").
How can I do this ?

My tree structure is as below :


Hospital
  - Hosp 1
      -Hosp 1.1
  - Hosp 2

delete flag offensive retag edit

5 Replies

Sort by ยป oldest newest

answered 2009-10-21 01:15:33 +0800

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

Hi,cros

you can try this

zul

<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<zk>
	<window id="win" border="0" apply="ctrl.Composer">
		<tree id="tree">
			<treechildren>
				<treeitem>
					<treerow>
						<treecell label="Hospital" />
					</treerow>
					<treechildren>
						<treeitem>
							<treerow>
								<treecell label="Hosp1" />
							</treerow>
							<treechildren>
								<treeitem>
									<treerow>
										<treecell label="Hosp1.1" />
									</treerow>
								</treeitem>
							</treechildren>
						</treeitem>
						<treeitem>
							<treerow draggable="true">
								<treecell label="Hosp2" />
							</treerow>
						</treeitem>
					</treechildren>
				</treeitem>
			</treechildren>
		</tree>
		<textbox id="textbox" />
		<button label="modify" id="modifyBtn" />
		<separator />
		<label id="msgLabel" style="color : red;" />
	</window>
</zk>

Composer.java

package ctrl;

import org.zkoss.lang.Strings;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;


public class Composer extends GenericForwardComposer {
	private Tree tree;
	private Textbox textbox;
	private Label msgLabel;
	@Override
	public void doAfterCompose(Component comp) throws Exception {
		super.doAfterCompose(comp);
	}

	public void onClick$modifyBtn(){
		String value = textbox.getValue();	
		Treeitem item = tree.getSelectedItem();
		
		msgLabel.setValue("");
		
		if(item == null){
			msgLabel.setValue("please select an item");	
			return;
		}
		if(Strings.isBlank(value)||Strings.isEmpty(value)){
			msgLabel.setValue("please input a name");
			return;
		}				
		
		Treecell treeCell = (Treecell)item.getTreerow().getFirstChild();
		treeCell.setLabel(value);		
	}
	
	public void onSelect$tree(){
		Treeitem item = tree.getSelectedItem();
		Treecell treeCell = (Treecell)item.getTreerow().getFirstChild();
		
		textbox.setValue(treeCell.getLabel());
	}
	
}

//jimmy

link publish delete flag offensive edit

answered 2009-10-21 08:33:07 +0800

cros gravatar image cros
153

Gr8 !!! It really helped to solve my problem.

Thanks Jimmy

link publish delete flag offensive edit

answered 2010-04-26 23:21:11 +0800

ryanwong00 gravatar image ryanwong00
63 1

updated 2010-04-26 23:21:52 +0800

Hello Jimmy,

I am facing a similar problem as cros and I have tried the code. The label changed as expected.
However, if I change a non-leaf item (eg. Hospital or Hosp 1), the expand/collapse ability of that node will no longer work.
Am I missing anything ?

Thanks a lot
Ryan :-)

link publish delete flag offensive edit

answered 2010-04-28 08:57:12 +0800

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

Hi ryanwong00
This a bug
I have posted here
we will trace it

link publish delete flag offensive edit

answered 2010-04-28 09:48:00 +0800

ryanwong00 gravatar image ryanwong00
63 1

Thanks :-)
Ryan

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: 2009-10-20 05:15:19 +0800

Seen: 486 times

Last updated: Apr 28 '10

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