on 05-30-2007 9:36 AM
Hi,
I have scnerio to populate a node which has Header and items.
For example Sales Order.
-> Order
!-> Order No.
|-> Items
-> Item_No
-> Material No
-> Quantity
-> Price
Order cardinality is 1..n
Order can have more than one item, so cardinality is 1..n for item.
How I can populate Order node, with a single order No. and multiple items.
Cheers,
Senthil
Hi,
I doubt nobody has mentioned about singleton.
All have mentioned cardinality instead of Singleton
Sinlgeton property of the child node should be false;
the below is the code to fetch the child values
for(int i=0;i<wdContext.nodeParent.size();i++)
{
for(int j= 0;j< wdContext.nodePatent().getPrentElemtnAT(i).nodeChild().size();j++)
{
wdContext.nodepartent.getparentElementAt(i).nodeChild().getChildElemntAt(j).getVal1()
}
}
Like this way you can fetch the values
AM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thank U for Ur answers Guys.. Solved.
Cheers,
Senthil
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi senthilkumar,
If u use table then do like this in DoInit()
for(int i=0;i<4;i++)
{
IPrivateNewView.IOrderElement obj=wdContext.nodeOrder().createOrderElement();
obj.setOrdno(i+"");
}
u set the cardinality for node "order" is 1..n
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
HI Senthil,
First set the cardinality of Items Node as false. Then
Do like this
IPrivate<View>.IOrderNode parentNode=wdContext.nodeOrder();
IPrivate<View>.IOrderElement parentEl;
for(int i=0;i<5;i++)
{
parentEl=parentNode.createOrderElement();
parentNode.addElement(parentEl);
for(int j=0;j<3;j++)
{
IPrivate<View>.IItemsNode childNode=parentEl.nodeItems();
IPrivate<View>.IItemsElement childEl=childNode.createItemsElement();
childNode.addElement(childEl);
}
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Senthil,
I can just repeat Fahad answer with comments:
<i>First set the cardinality of Items Node as false.</i>
Actually, I believe Fahad means "set singleton of child node to false"
/* Get Order node to populate */
final IPrivate<View>.IOrderNode nOrders=wdContext.nodeOrder();
for (int i=0; i<5; i++) { /* 5 here is a number of Orders to create */
IPrivate<View>.IOrderElement elOrder = nOrders.createOrderElement();
elOrderItem.setNo("00000000ABC");
nOrders.addElement(elOrder);
/* At this point Order is added to node */
/* and we can add elements of child node -- Items */
/* Here is how we relate Order with Items: */
/* We get Items node from Order element */
final IPrivate<View>.IItemsNode nOrderItems = elOrder.nodeItems();
for(int j=0; j<3; j++) { /* 3 here is a number of Orders to create */
IPrivate<View>.IItemsElement elOrderItem = nOrderItems.createItemsElement();
elOrderItem.setItemNo("00000000010");
nOrderItems.addElement(elOrderItem);
}
}
Valery Silaev
SaM Solutions
Message was edited by:
Valery Silaev
Replace "cardinality" with "singleton"
HI Senthil,
Since one order can have more than one items, the best way is to create a node (<b>Order</b>) with cardinality 0.N or 1.N (Since it can contain 0..N records). Then each Order records will be having one OrderNo, so create a context atttribute(<b>OrderNumber</b>) inside node Order. For each Order(ie. for each Order No.), since there is more than one items, create a node(<b>Items</b>) inside Order with cardinality as false, sothat u will be able to create more than one Items Element for a particular Order element. Inside this Items node, u can create context attributes like <b>ItemsNumber</b>, <b>Price</b> etc. Then use the code below, which is similar to the code I posted. That code craeates 5 Order records(with order number myorder1,2,etc), with each OrderNo. will be having three Items entries(with itemnumber myitem1,2,3 and Price myPrice1,2,3)
IPrivate<View>.IOrderNode parentNode=wdContext.nodeOrder();
IPrivate<View>.IOrderElement parentEl;
for(int i=0;i<5;i++)
{
parentEl=parentNode.createOrderElement();
parentNode.addElement(parentEl);
<b>parentEl.setOrderNumber("myorder"(i1));</b>
for(int j=0;j<3;j++)
{
IPrivate<View>.IItemsNode childNode=parentEl.nodeItems();
IPrivate<View>.IItemsElement childEl=childNode.createItemsElement();
childNode.addElement(childEl);
<b>childEl.setItemsNumber("myitem"(j1));</b>
<b>childEl.setPrice("myPrice"(j1));</b>
}
}
Regards
Fahad Hamsa
Senthil,
Can you explain what does it mean "read context" and "relate nodes" with some example?
Say, like this:
"I need to find Order element that corresponds to Item element":
final IPrivate<View>.IItemsElement elOrderItem = </* Receive it somehow -- from parameters for example*/>;
final IPrivate<View>.IOrderElement elOrder = (IPrivate<View>.IOrderElement)elOrderItem.node().parentElement();
Or:
"I need to get all Items of selected Order":
final IPrivate<View>.IOrderElement elOrder = wdContext.currentOrderElement();
final final IPrivate<View>.IItemsNode nOrderItems = elOrder.nodeItems();
for (int c = nOrderItems.size(), i = 0; i < c; i++) {
final IPrivate<View>.IItemsElement elOrderItem = nOrderItems.getItemsElementAt(i);
}
Valery Silaev
SaM Solutions
User | Count |
---|---|
84 | |
23 | |
11 | |
9 | |
8 | |
5 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.