cancel
Showing results for 
Search instead for 
Did you mean: 

Drop down in table

Former Member
0 Kudos

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

}

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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

Answers (3)

Answers (3)

vijayakhanna_raman
Active Contributor
0 Kudos

Hi,

Check this

Regards,

Vijayakhanna Raman

Former Member
0 Kudos

Jesmi,

Check singleton property of node that supplies texts for DropDownByIndex. It should be singleton=false.

VS

Former Member
0 Kudos

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