cancel
Showing results for 
Search instead for 
Did you mean: 

How to bind a UI element to the context

Former Member
0 Kudos

Hi Experts,

I have a problem binding UI element to the context. In my code i have to create TabStrips dynamically and under this tabstrip number of UI elements would be there. For this i have a code like this..

 IWDTransparentContainer theActionContainer =(IWDTransparentContainer)view.getElement("RootUIElementContainer");
	IWDTabStrip ts = (IWDTabStrip) view.createElement(IWDTabStrip.class,"TabStrip");
		IWDTab tab1 = (IWDTab) view.createElement(IWDTab.class,"Tab1");
		IWDInputField in = (IWDInputField) view.createElement(IWDInputField.class,"in");
		IWDCaption header1 = (IWDCaption) view.createElement(IWDCaption.class,"Header1");
		header1.setText("Tab1");
		tab1.setContent(in);
		ts.addTab(tab1);
		IWDTab tab2 = (IWDTab) view.createElement(IWDTab.class,"Tab2");
		IWDInputField in2 = (IWDInputField) view.createElement(IWDInputField.class,"in2");
		
		IWDCaption header2 = (IWDCaption) view.createElement(IWDCaption.class,"Header2");
		header2.setText("Tab2");
		tab2.setHeader(header2);
		ts.addTab(tab2);
		theActionContainer.addChild(ts);

<b>when i run this code it is giving following exceptions..</b>

The initial exception that caused the request to fail, was:

com.sap.tc.webdynpro.services.exceptions.WDRuntimeException: Property 'value' of AbstractInputField with id 'in' in view 'LoginView' must be bound to the context

at com.sap.tc.webdynpro.clientserver.uielib.standard.impl.AbstractInputField.getValue(AbstractInputField.java:1260)

at com.sap.tc.webdynpro.clientserver.uielib.standard.uradapter.InputFieldAdapter.getValue(InputFieldAdapter.java:582)

at com.sap.tc.ur.renderer.ie6.InputFieldRenderer.render(InputFieldRenderer.java:56)

at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:435)

at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:134)

... 63 more

com.sap.tc.webdynpro.services.exceptions.WDRuntimeException: Property 'value' of AbstractInputField with id 'in' in view 'LoginView' must be bound to the context

at com.sap.tc.webdynpro.clientserver.uielib.standard.impl.AbstractInputField.getValue(AbstractInputField.java:1260)

at com.sap.tc.webdynpro.clientserver.uielib.standard.uradapter.InputFieldAdapter.getValue(InputFieldAdapter.java:582)

at com.sap.tc.ur.renderer.ie6.InputFieldRenderer.render(InputFieldRenderer.java:56)

at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:435)

at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:134)

at com.sap.tc.ur.renderer.ie6.TabStripRenderer.renderTabStripItemContentFragment(TabStripRenderer.java:1867)

at com.sap.tc.ur.renderer.ie6.TabStripRenderer.renderTabStripFragment(TabStripRenderer.java:838)

..........................................................

From these exceptions what i understood is, i need to bind these UI elements to context.

Can any body tell me how to bind a UI element to the context if I understood the exceptions correct..

Thanks in Advance,

Murthy.

Accepted Solutions (1)

Accepted Solutions (1)

abhijeet_mukkawar
Active Contributor
0 Kudos

HI,

lets say Ctx is your context attribute,

IWDAttributeInfo attrInfo = wdContext.getNodeInfo.getAttribute("Ctx");

then , as per your code,

IWDInputField in = (IWDInputField) view.createElement(IWDInputField.class,"in");

<b>in.bindValue(attrInfo);</b>

if your contex attribute is child of some other node then do like this,

IWDAttributeInfo attrInfo = wdContext.getNodeInfo.getChildNode("SalesOrder",0)getAttribute("Ctx");

//this is when Ctx is child of node SalesOrder, and we are taking Ctx from its 0th element

then ,

IWDInputField in = (IWDInputField) view.createElement(IWDInputField.class,"in");

<b>in.bindValue(attrInfo);</b>

include this in your code ,

let me know if you face any problem

regards

reward points if it helps

Former Member
0 Kudos

Hi Abhijeet,

I just copied and pasted in my code, and it worked.

Thanks alot..

Murthy.

Answers (3)

Answers (3)

former_member189631
Active Contributor
0 Kudos

Hi Narasima,

Take this Example and Implement,

IWDAttributeInfo info1 = wdContext.getNodeInfo().getAttribute("age");

IWDTextView text = (IWDTextView)view.createElement(IWDTextView.class,null);

wdContext.currentContextElement().setAge(12);

text.bindText(info1);

Regards,

<b>Ramganesan </b>

venkatakalyan_karanam
Active Contributor
0 Kudos

Hi

Dont run the program without binding the InputFields you created,because you will get a runtime exception for that.

regards

kalyan

venkatakalyan_karanam
Active Contributor
0 Kudos

Hi

When ever you crate a input field or TextView the property if that element named "value" must be bound to appropriate context attribute.So create a context attribute and bind this to "value" property of the element.You can create the context attribute either at design time or at run time.You created the element at runtime so bindind should be takes place at runtime.So after creating the context attribute Go to the context of view Select Root Context>rightclick-select new value attr

Enter the name and type of that attr.

Coming to your code,you have ref of input fiels say in

There are some methods regarding binding ,Use that method and pass appropriate parameters.

See for more info

www.help.sap.com

regards

kalyan