cancel
Showing results for 
Search instead for 
Did you mean: 

EVS Problem

Former Member
0 Kudos

Hello Experts,

1) I want to display <b>short</b> column first and <b>longtext</b> second in the EVS.

2) On selecting the value help <b>longtext</b> should be displayed as selected inside the EVS combo box.

I have easily achieved the 1st and not able achieve 2nd.

Following is my code for EVS


IModifiableSimpleValueSet valueset = 
			 wdContext.nodeEt_abc_List().getNodeInfo().getAttribute("Short").getModifiableSimpleType().getSVServices().getModifiableSimpleValueSet();
			 
			 valueset.clear();
			 
			 for (int i=0; i<wdContext.nodeEt_abc_List().size(); i++)
			 	{
				 	valueset.put(wdContext.nodeEt_abc_List().getElementAt(i).getAttributeAsText("Short"), wdContext.nodeEt_abc_List().getElementAt(i).getAttributeAsText("Longtext"));
				}

Regards, Amol

Accepted Solutions (0)

Answers (2)

Answers (2)

monalisa_biswal
Contributor
0 Kudos

One way is to show long description first and short description as second column.

Create another value attribute in your node which will send data to the backend.

set its calculated property to false.

In the getter method of the attribute get the short description using valueset.getText(Object arg0) method.

Former Member
0 Kudos

Hi monalisa,

I want to show "short" column first and "longtext" second in EVS and if a user selects a row in EVS

(<i>EVS will be closed after selection</i>) longtext should appear selected inside the box.

Former Member
0 Kudos

Actually the following line of code is responsible for populating EVS aswell as sets first column inside EVS after selection.

valueset.put(wdContext.nodeEt_abc_List().getElementAt(i).getAttributeAsText("Short"),

wdContext.nodeEt_abc_List().getElementAt(i).getAttributeAsText("Longtext"));

is there any other way to do so ?

monalisa_biswal
Contributor
0 Kudos

No setting second column value in the input field using EVS is not possible.

You can create a textView adjacent to the input field ans bind its text property to a calculated value attribute.

In the getter method of the value attribute get long text from the valueset.

Or use dropdownbykey ui elemnt instead of EVS and show both short description and long description separated by some separator.

Or create a view with a table with two columns(short & long text).

Create a window to embed that view.

create a button adjacent to input field.On selection of input field call the window.

On selection of table row , close the child window and set long text of selected row to the input field.

Or create an OVS with these two fields in the Output Node.

Set calculated proprty of the value attribute to true.In the getter method get longtext value attribute's value from the current element of output node

Former Member
0 Kudos

Am facing following limitations:

<b>1)</b> As per the design requirement i can not have another input field adjacent to valuehelp.

<b>2)</b> This is a re-useable component so using diferent tables with windows is not a good deal, that would be an extra complexity for the project.

<b>3)</b> One valuehelp is getting populated on the basis of other valuehelps's selection and further i have used calculated attributes to avoid buttons.

<b>4)</b> I like the inbuilt search functionality of EVS valuehelp which is very flexible and stable.

<b>5)</b> I have found that using multiple OVS on one screen is not a good practice and usually involves a lot of coding which i want to avoid. and really i can't have 2 input fields for that. i can do this even with EVS but that's not as per the design.

<b>6)</b> using dropdownbykey can not serve the purpose because it lacks in functionality.

if there is any other possibility please let me know.

Thanks & Regards

Amol

Former Member
0 Kudos

Amol,

EVS is built-in component with very limited (if any) customization options. So, for example, you can't change order of columns.

OVS is more powerful, also it has own limitations (or irritations). Actually, amount of "OVS Coding" per screen directly depends on programmer skills to write reusable code. But, frankly, it's not simple to create reusable OVS code.

I'd recommend you to read my blog entries about possible OVS tricks, probably you'll borrow some ideas for your task:

<a href="/people/valery.silaev/blog/2006/03/10/minus-evs-plus-ovs-value-help-smart-input">Minus EVS, Plus OVS == value help + "smart" input</a>

<a href="/people/valery.silaev/blog/2005/08/15/ovs-reloaded">OVS, Reloaded</a>

The first one seems to suit your requirements quite well, just make small change in RESULT_ELEMENT_INFO definition: first declare "value", then "key"

Valery Silaev

SaM Solutions

http://www.sam-solutions.net

Former Member
0 Kudos

Hi Valery,

Yes i am following your blogs, and i have successfully created ValueHelp Re-useable component. I even played a lot with OVS and found many limitations or you can say irritations

Anyhow, the design specification has been changed and i am relieved with that. The above mentioned problem has been resolved.

Thank you all for your nice replies.

Amol

Former Member
0 Kudos

Hi Amol,

Did you try setting the same to your context attribute, ie.,

wdContext.currentContextElement().set<Short>(wdContext.nodeEt_abc_List().getElementAt(i).getAttributeAsText("Longtext"));

Regards,

Jhansi

Former Member
0 Kudos

Hi Jhansi,

Yes i tried this already but i can not set the value of longtext in short because the size of short is defined in backend and it gives me an error.

What else can i do ?

younghwan_kim
Active Participant
0 Kudos

> Hi Jhansi,

>

> Yes i tried this already but i can not set the value

> of longtext in short because the size of short is

> defined in backend and it gives me an error.

>

> What else can i do ?

Actually, there is a way to bypass backend definition.

Add another attribute next to SHORT attribute, and

create setter and getter for new attribute, which set and get SHORT attribute's value.

Then, map this new attriubte to your UIElement.