cancel
Showing results for 
Search instead for 
Did you mean: 

WDJ - Dynamic Table

Former Member
0 Kudos

Hi,

I've been trying to read an XML file to build a dynamic Table in a Web Dynpro App:

It works but always displays only one record (if I change the code little bit it displays first record otherwise the last record)

I'm not sure what I'm doing wrong and have struggled enough to post it on SDN

I displayed the values from XML fine..just trying to build a dynamic Table now.

XML:

<?xml version="1.0" encoding="UTF-8"?>
<jobs>
	<job>
		<id>1</id>
		<desc>Test</desc>
	</job>
	<job>
		<id>2</id>
		<desc>Test2</desc>
	</job>
</jobs>

				

IWDNodeInfo nodeInfo=wdContext.getNodeInfo().addChild("XMLTable", null, true, true, true, false, false, true, null, null, null);
				nodeInfo.addAttribute("ID", "com.sap.dictionary.string");
				nodeInfo.addAttribute("Desc", "com.sap.dictionary.string");

IWDNode node = wdContext.wdGetAPI().getRootNode().getChildNode("XMLTable", IWDNode.LEAD_SELECTION);
				
				IWDNodeElement nodeElem = node.createElement();
				
				for (int s = 0; s < nodeLst.getLength(); s++) 

				{
					-----condition that loops twice------

					nodeElem.setAttributeValue("ID", ((Node) fstNm.item(0)).getNodeValue());
					nodeElem.setAttributeValue("Desc", ((Node) lstNm.item(0)).getNodeValue());

					node.addElement(nodeElem);
				}

My table only shows one row no matter what.

Any idea?

Regards,

E.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi

try this,

IWDNodeElement nodeElem = null;

for (int s = 0; s < nodeLst.getLength(); s++)

{

-


condition that loops twice------

nodeElem.createElement();

nodeElem.setAttributeValue("ID", ((Node) fstNm.item(0)).getNodeValue());

nodeElem.setAttributeValue("Desc", ((Node) lstNm.item(0)).getNodeValue());

node.addElement(nodeElem);

}

Regards

Mandeep Virk

Former Member
0 Kudos

Still wrong.

Armin

Answers (2)

Answers (2)

snehal_kendre
Active Contributor
0 Kudos

HI Explorer,

move IWDNodeElement nodeElem = node.createElement(); into for loop i.e.

IWDNodeInfo nodeInfo=wdContext.getNodeInfo().addChild("XMLTable", null, true, true, true, false, false, true, null, null, null);
				nodeInfo.addAttribute("ID", "com.sap.dictionary.string");
				nodeInfo.addAttribute("Desc", "com.sap.dictionary.string");
 
IWDNode node = wdContext.wdGetAPI().getRootNode().getChildNode("XMLTable", IWDNode.LEAD_SELECTION);
				
				
				
				for (int s = 0; s < nodeLst.getLength(); s++) 
 
				{
					-----condition that loops twice------
// create a new element everytime and add data into it   IWDNodeElement nodeElem = node.createElement();
					nodeElem.setAttributeValue("ID", ((Node) fstNm.item(0)).getNodeValue());
					nodeElem.setAttributeValue("Desc", ((Node) lstNm.item(0)).getNodeValue());
 
					node.addElement(nodeElem);
				}

Former Member
0 Kudos

Hi Guys,

Thanks for responding. I've tried all that before. Didn't work. Suddenly, this morning when I just moved the create statement inside the for loop..it started working. I swear to god I've tried this before

Anyways, I've noticed this strange behavior with Java Engine or NWDS earlier in a couple of ocassions where the app didn't work one day but when deployed the same package next morning (with out making any changes) it worked..amazing ..

Thanks for helping..

Regards,

E.

Former Member
0 Kudos

Honestly you cannot expect that the NWDS or Web AS turns wrong code into correct one

Armin

Former Member
0 Kudos

Move the createElement() inside the loop.

Armin