on 02-28-2007 12:18 PM
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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 ?
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
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
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
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
> 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.
User | Count |
---|---|
93 | |
10 | |
10 | |
9 | |
9 | |
7 | |
6 | |
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.