on 08-17-2006 8:27 AM
hi,
I have a dropdown by key in a table with 50 values.when I select a value in this drop down the following method will be called.This method is used to set new values in a dropby index present in the same table.This is happening perfectly.When I press enter to go to the next row in the table,the dropdown by index is retaining previous values.when I select the value in it change in second row is reflected to the first row also.this should not happen.Old values in the previous row of the dynamic dropdown should be retained.Can u suggest what should be done.
public void onActionselectSkill(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
{
//@@begin onActionselectSkill(ServerEvent)
//IPrivateDetails1.ISkillsNode nSkills = wdContext.nodeSkills();
//IPrivateDetails1.INewskillNode nNewSkill = wdContext.nodeNewskill();
int newsklen=wdContext.nodeNewskill().size();
int sklength = wdContext.nodeSkills().size();
boolean cppAdded = false;
String getsub="";
for(int i=0;i<sklength;i++)
{
getsub=wdContext.nodeSkills().getSkillsElementAt(i).getSubject();
}
//String getsub=wdThis.wdGetContext().currentSkillsElement().getSubject();
// String getsub=nSkills.currentSkillsElement().getSubject();
// String getsub="50000138";
if(getsub.equals("50000138"))
{
IPrivateDetails1.ISkillsNode nSkills = wdContext.nodeSkills();
IPrivateDetails1.INewskillNode nNewSkill = wdContext.nodeNewskill();
List lis=new ArrayList();
IPrivateDetails1.INewskillElement el1 = nNewSkill.createNewskillElement();
el1.setTskill("abap");
lis.add(el1);
IPrivateDetails1.INewskillElement el2 = nNewSkill.createNewskillElement();
el2.setTskill("workflow");
lis.add(el2);
//wdContext.nodeNewskill().bind(lis);
nNewSkill.bind(lis);
//nNewSkill.setLeadSelection(1);
}
else if(getsub.equals("50000130"))
{
IPrivateDetails1.ISkillsNode nSkills = wdContext.nodeSkills();
IPrivateDetails1.INewskillNode nNewSkill = wdContext.nodeNewskill();
List lis=new ArrayList();
IPrivateDetails1.INewskillElement el11 = nNewSkill.createNewskillElement();
el11.setTskill(" C Programming");
lis.add(el11);
IPrivateDetails1.INewskillElement el21 = nNewSkill.createNewskillElement();
el21.setTskill("C++ Programming");
lis.add(el21);
IPrivateDetails1.INewskillElement el31 = nNewSkill.createNewskillElement();
el31.setTskill("C# Programming");
lis.add(el31);
IPrivateDetails1.INewskillElement el41 = nNewSkill.createNewskillElement();
el41.setTskill("Java");
lis.add(el41);
IPrivateDetails1.INewskillElement el51 = nNewSkill.createNewskillElement();
el51.setTskill(" Visual Basic");
lis.add(el51);
IPrivateDetails1.INewskillElement el61 = nNewSkill.createNewskillElement();
el61.setTskill("Pascal");
lis.add(el61);
IPrivateDetails1.INewskillElement el71 = nNewSkill.createNewskillElement();
el71.setTskill(".Net");
lis.add(el71);
nNewSkill.bind(lis);
//nNewSkill.setLeadSelection(1);
}
else if (!cppAdded)
{
IPrivateDetails1.ISkillsNode nSkills = wdContext.nodeSkills();
IPrivateDetails1.INewskillNode nNewSkill = wdContext.nodeNewskill();
cppAdded = true;
List lis=new ArrayList();
IPrivateDetails1.INewskillElement elCpp = nNewSkill.currentNewskillElement();
if (null == elCpp) {
elCpp = nNewSkill.createNewskillElement();
elCpp.setTskill("Other");
nNewSkill.addElement(elCpp);
nNewSkill.bind(lis);
//nNewSkill.setLeadSelection( nNewSkill.size() - 1);
}
elCpp.setTskill("C++");
nNewSkill.bind(lis);
}
//@@end
}
The method that is called when I click enter in the table is
public void onActionaddSkills(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
{
//@@begin onActionaddSkills(ServerEvent)
int sarea=0,keysk=0,pro=0,fdas=0,tdas=0;
if(wdContext.nodeSkills().currentSkillsElement().getSubject()==null)
{
sarea=1;
}
if(wdContext.nodeNewskill().currentNewskillElement().getTskill()==null)
{
keysk=1;
}
if(wdContext.nodeSkills().currentSkillsElement().getProficiency()==null)
{
pro=1;
}
if(wdContext.nodeSkills().currentSkillsElement().getFromdateSkills()==null)
{
fdas=1;
}
//if(wdContext.nodeSkills().currentSkillsElement().getTodateSkills()==null)
//{
// tdas=1;
//}
if(sarea==1 || keysk==1 || pro==1 || fdas==1 )
{
IWDControllerInfo ctrlInfo3=wdThis.wdGetAPI().getViewInfo().getViewController();
IWDConfirmationDialog dialog3=wdComponentAPI.getWindowManager().createConfirmationWindow("SkillSets Table Field Is Missing.""\n""Check ur entry!!!",ctrlInfo3.findInEventHandlers("ok"),"OK");
dialog3.addChoice(ctrlInfo3.findInEventHandlers("cancel"),"cancel");
dialog3.open();
}
else
{
skNode=wdContext.nodeSkills();
skEl=skNode.createSkillsElement();
skNode.addElement(skEl);
//IPrivateDetails1.INewskillNode nsknewNode;
// IPrivateDetails1.INewskillElement nsknewEl;
sknewNode=wdContext.nodeNewskill();
sknewEl=sknewNode.createNewskillElement();
sknewNode.addElement(sknewEl);
}
//@@end
}
Perhaps it's best if you tell us what exactly your code <b>should </b>do, because it looks, let's say suboptimal, to me.
Armin
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.
Jesmi,
Check singleton property of node that supplies texts for DropDownByIndex. It should be singleton=false.
VS
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
I did not study your code, but the behaviour you describe is clear.
You have to create the 50 nodes dynamically for each table row (to be precise: for each nodeElement the row is bound to), and bind the Dropdown element in the particular row to each of these nodes (with 50 elements).
This must be done dynimcally if you don't know how many rows your table will contain. Otherwise, you can create the context for all table data design time.
Good luck.
Roelof
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.