on 02-15-2011 7:17 AM
hi all
the issue is solved by the above link ,now i have issue where
when i select particular value in the first drop down it need to display one input field along with label and if i select second value in the first drop down it need to display two more fields below it.
can u please share your exp on this
thanks in advance
Deepika
Hi deepika,
In case try if you can create some input fields in layout properties and control the visibility of the in the action of the dropdownbykey .
If the above scenario does not match with your requiment the try to create input field and label dynamically.
for that follow the link:-
also sarbjeet's reply in :-
[Dynamic Input field with Label|;
Reply in case of any issue.
Regards,
Monishankar C
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
hi
Thanks for quick response but those fields should be displayed only when i select particular vlaue in the dropdown by key .
i mean depending on the value selected in ddbk that inputfield should displayed and when i select other value in drop down it need to display other two input field and ip field already available when we selected first value in drop down should be automatically go into invisible mode.
Thanks & Regards
Deepika
Edited by: deepika_indian on Feb 15, 2011 9:11 AM
Hello Deepika,
Create an attirbute of type wdy_boolean. say its name as WDUI_VISIBILITY.
then create the input filed in the layout which you want visible only when you select a value .
and bidn its property visible to this attribute VIS.
now consider the example of the previous question raised by you
let us assume you want the inputfield visible only when you select A2 from the first dropwon
then write the following code.
"filling the dropdown one
data vl type table of wdr_context_attr_value.
data wl type wdr_context_attr_value.
data nd type ref to if_wd_context_node.
data nodeinf type ref to if_wd_context_node_info.
nd = wd_context->get_child_node( 'VAL' ).
nodeinf = nd->get_node_info( ).
DATA FS_VAL TYPE STRING.
ND->GET_ATTRIBUTE(
EXPORTING
NAME = 'A'
IMPORTING
VALUE = FS_VAL
).
IF FS_VAL EQ 'A1'.
wl-text = 'B1'.
wl-value = 'B1'.
append wl to vl.
wl-text = 'B2'.
wl-value = 'B2'.
append wl to vl.
wd_context->set_attribute(
name = 'VIS'
value = cl_wd_uielement=>e_visible-NONE ). " make it invisble on A1
ELSEIF FS_VAL EQ 'A2'.
wl-text = 'B3'.
wl-value = 'B3'.
append wl to vl.
wl-text = 'B4'.
wl-value = 'B4'.
append wl to vl.
wd_context->set_attribute(
name = 'VIS'
value = cl_wd_uielement=>e_visible-VISIBLE ). "make it visible
ENDIF.
nodeinf->set_attRibute_value_Set(
name = 'B'
value_Set = vl
).
THANKS
SARBJEET SINGH
Hi
In the beginning set the default value invisible for all.
You try to set the visibility in the action of the dropdown.
you got two values in the drop down. Now first get the value.
make a condition like :-
if value 1.
set the visibility of the first input field.
elseif value 2.
check whether the value of first input field is visible or not , if yes then set it to invsible .
set the visibility of the other two input field.
endif.
Regards,
Monishankar C
hi
i agree with ur code wat u have sent,but i have created input fields and lables dynamically and used the below code in wdmodify view method.
but the the problem
DATA VL TYPE TABLE OF WDR_CONTEXT_ATTR_VALUE.
DATA WL TYPE WDR_CONTEXT_ATTR_VALUE.
DATA ND TYPE REF TO IF_WD_CONTEXT_NODE.
DATA NODEINF TYPE REF TO IF_WD_CONTEXT_NODE_INFO.
ND = WD_CONTEXT->GET_CHILD_NODE( 'VAL' ).
NODEINF = ND->GET_NODE_INFO( ).
DATA FS_VAL TYPE STRING.
ND->GET_ATTRIBUTE(
EXPORTING
NAME = 'A'
IMPORTING
VALUE = FS_VAL
).
IF FS_VAL EQ 'RentedAccom'.
WL-TEXT = 'NonMetro'.
WL-VALUE = 'NonMetro'.
APPEND WL TO VL.
WL-TEXT = 'Metro'.
WL-VALUE = 'Metro'.
APPEND WL TO VL.
ELSEIF FS_VAL EQ 'Companyowned'.
WL-TEXT = 'CityPopulation>4lakhs'.
WL-VALUE = 'CityPopulation>4lakhs'.
APPEND WL TO VL.
WL-TEXT = 'OtherCities'.
WL-VALUE = 'OtherCities'.
APPEND WL TO VL.
ENDIF.
NODEINF->SET_ATTRIBUTE_VALUE_SET(
NAME = 'B'
VALUE_SET = VL ) .
IF FS_VAL EQ 'RentedAccom'.
DATA LCR1 TYPE REF TO CL_WD_TRANSPARENT_CONTAINER.
LCR1 ?= VIEW->GET_ELEMENT( 'ROOTUIELEMENTCONTAINER' ).
*
DATA INPUT3 TYPE REF TO CL_WD_INPUT_FIELD.
DATA INPUT4 TYPE REF TO CL_WD_INPUT_FIELD.
DATA LR_LABEL3 TYPE REF TO CL_WD_LABEL.
DATA LR_LABEL4 TYPE REF TO CL_WD_LABEL.
DATA LR_LABEL1 TYPE REF TO CL_WD_LABEL.
DATA LR_LABEL2 TYPE REF TO CL_WD_LABEL.
DATA INPUT1 TYPE REF TO CL_WD_INPUT_FIELD.
DATA INPUT2 TYPE REF TO CL_WD_INPUT_FIELD.
DATA MATRIX TYPE REF TO CL_WD_MATRIX_DATA.
DATA MATRIX_HEAD TYPE REF TO CL_WD_MATRIX_HEAD_DATA.
DATA LCR TYPE REF TO CL_WD_TRANSPARENT_CONTAINER.
LCR ?= VIEW->GET_ELEMENT( 'ROOTUIELEMENTCONTAINER' ).
INPUT1 = CL_WD_INPUT_FIELD=>NEW_INPUT_FIELD( BIND_VALUE = 'INPUT1'
ID = 'INP1'
).
MATRIX_HEAD = CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA( INPUT1 ).
INPUT1->SET_LAYOUT_DATA( MATRIX_HEAD ).
LR_LABEL1 = CL_WD_LABEL=>NEW_LABEL(
ID = 'LB1'
LABEL_FOR = 'INP1'
TEXT = 'LABEL1'
).
MATRIX_HEAD = CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA( LR_LABEL1 ).
LR_LABEL1->SET_LAYOUT_DATA( MATRIX_HEAD ).
INPUT2 = CL_WD_INPUT_FIELD=>NEW_INPUT_FIELD( BIND_VALUE = 'INPUT2'
ID = 'INP2'
).
MATRIX = CL_WD_MATRIX_DATA=>NEW_MATRIX_DATA( INPUT2 ).
INPUT2->SET_LAYOUT_DATA( MATRIX ).
LR_LABEL2 = CL_WD_LABEL=>NEW_LABEL(
ID = 'LB2'
LABEL_FOR = 'INP2'
TEXT = 'LABEL2'
).
MATRIX = CL_WD_MATRIX_DATA=>NEW_MATRIX_DATA( LR_LABEL2 ).
LR_LABEL2->SET_LAYOUT_DATA( MATRIX ).
LCR->ADD_CHILD( LR_LABEL1 ).
LCR->ADD_CHILD( LR_LABEL2 ).
LCR->ADD_CHILD( INPUT1 ).
LCR->ADD_CHILD( INPUT2 ).
************************************************************************
ELSEIF FS_VAL EQ 'Companyowned'.
DATA LR_LABEL3 TYPE REF TO CL_WD_LABEL.
DATA LR_LABEL4 TYPE REF TO CL_WD_LABEL.
DATA INPUT3 TYPE REF TO CL_WD_INPUT_FIELD.
DATA INPUT4 TYPE REF TO CL_WD_INPUT_FIELD.
DATA MATRIX TYPE REF TO CL_WD_MATRIX_DATA.
DATA MATRIX_HEAD TYPE REF TO CL_WD_MATRIX_HEAD_DATA.
DATA LCR1 TYPE REF TO CL_WD_TRANSPARENT_CONTAINER.
LCR1 ?= VIEW->GET_ELEMENT( 'ROOTUIELEMENTCONTAINER' ).
INPUT3 = CL_WD_INPUT_FIELD=>NEW_INPUT_FIELD( BIND_VALUE = 'INPUT3'
ID = 'INP3'
).
MATRIX_HEAD = CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA( INPUT3 ).
INPUT3->SET_LAYOUT_DATA( MATRIX_HEAD ).
LR_LABEL3 = CL_WD_LABEL=>NEW_LABEL(
ID = 'LB3'
LABEL_FOR = 'INP3'
TEXT = 'LABEL3'
).
MATRIX_HEAD = CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA( LR_LABEL3 ).
LR_LABEL3->SET_LAYOUT_DATA( MATRIX_HEAD ).
INPUT4 = CL_WD_INPUT_FIELD=>NEW_INPUT_FIELD( BIND_VALUE = 'INPUT4'
ID = 'INP4'
).
MATRIX = CL_WD_MATRIX_DATA=>NEW_MATRIX_DATA( INPUT4 ).
INPUT4->SET_LAYOUT_DATA( MATRIX ).
LR_LABEL4 = CL_WD_LABEL=>NEW_LABEL(
ID = 'LB4'
LABEL_FOR = 'INP4'
TEXT = 'LABEL4'
).
MATRIX = CL_WD_MATRIX_DATA=>NEW_MATRIX_DATA( LR_LABEL4 ).
LR_LABEL4->SET_LAYOUT_DATA( MATRIX ).
LCR1->ADD_CHILD( LR_LABEL3 ).
LCR1->ADD_CHILD( LR_LABEL4 ).
LCR1->ADD_CHILD( INPUT3 ).
LCR1->ADD_CHILD( INPUT4 ).
END IF.
is when i select second value like company owned i am able to see u ip fields ,first 2 are related to rentaccom and next two are related to company owned,but my requirement is when i select first value one first ip fields related to it shld be displayed and viceversa.
if i use above coding for first value i am able to 2 ip fields
when i select sec value in drop down along with first two 3 4 ip also also i am able to see.
i want to make first ips invisible for secnd value selected and vice versa
how to make those fields invisible with the dynamic coding.
thanks in advance
Deepika
Here you can find the label and input field and delete it form th econatiner.
but this wont be a gud approach
i will say go with the visiblity method.
create an attribute named 'VIS' of type wdui_visiblity.
however here is the logic for removing input field and label when adding in B.
data label type ref to cl_wd_label.
data uie type ref to CL_WD_UIELEMENT.
data total type i.
data indx type i.
data id type string.
total = lr_container->number_of_children( ).
do total times.
indx = sy-index.
uie = LCR1->get_child( index = indx ).
id = uie->id.
if id eq 'LBL1' or id eq 'LBL2' OR id eq 'INP1' or id eq 'INP2'.
LCR1->REMOVE_child( index = indx ).
endif.
enddo.
similary you can do for A also.
thanks
sarbjeet singh
Hi SARBJEET SINGH
When i used the code from Ur last reply but,when i select one value in drop down(just think A1),it is showing two inp1 lab1, and ip2,lab2 but when i select second value (A2) it show that ip3 ip4 fields along with label2 and ip2.
when i select A2 first it showing ip3 lab3,ip4 lab4,again when i selected A1 it is giving ip1 lab1,ip2 lab2 along with ip4 lab4.
every time one field and label is not hiding with code Wat u have sent for the visibility,can u please let me why the problem is occurring.
Thanks in advance
Deepika
Edited by: deepika_indian on Feb 16, 2011 7:50 AM
HI
Here is the complete code for wddomodify.
however i am saying it again that better approach is with visiblity
DATA VL TYPE TABLE OF WDR_CONTEXT_ATTR_VALUE.
DATA WL TYPE WDR_CONTEXT_ATTR_VALUE.
DATA ND TYPE REF TO IF_WD_CONTEXT_NODE.
DATA NODEINF TYPE REF TO IF_WD_CONTEXT_NODE_INFO.
data uie type ref to CL_WD_UIELEMENT.
data total type i.
data indx type i.
data id type string.
ND = WD_CONTEXT->GET_CHILD_NODE( 'VAL' ).
NODEINF = ND->GET_NODE_INFO( ).
DATA FS_VAL TYPE STRING.
ND->GET_ATTRIBUTE(
EXPORTING
NAME = 'A'
IMPORTING
VALUE = FS_VAL
).
IF FS_VAL EQ 'RentedAccom'.
WL-TEXT = 'NonMetro'.
WL-VALUE = 'NonMetro'.
APPEND WL TO VL.
WL-TEXT = 'Metro'.
WL-VALUE = 'Metro'.
APPEND WL TO VL.
ELSEIF FS_VAL EQ 'Companyowned'.
WL-TEXT = 'CityPopulation>4lakhs'.
WL-VALUE = 'CityPopulation>4lakhs'.
APPEND WL TO VL.
WL-TEXT = 'OtherCities'.
WL-VALUE = 'OtherCities'.
APPEND WL TO VL.
ENDIF.
NODEINF->SET_ATTRIBUTE_VALUE_SET(
NAME = 'B'
VALUE_SET = VL ) .
IF FS_VAL EQ 'RentedAccom'.
* DATA LCR1 TYPE REF TO CL_WD_TRANSPARENT_CONTAINER.
* LCR1 ?= VIEW->GET_ELEMENT( 'ROOTUIELEMENTCONTAINER' ).
*
DATA INPUT3 TYPE REF TO CL_WD_INPUT_FIELD.
DATA INPUT4 TYPE REF TO CL_WD_INPUT_FIELD.
DATA LR_LABEL3 TYPE REF TO CL_WD_LABEL.
DATA LR_LABEL4 TYPE REF TO CL_WD_LABEL.
DATA LR_LABEL1 TYPE REF TO CL_WD_LABEL.
DATA LR_LABEL2 TYPE REF TO CL_WD_LABEL.
DATA INPUT1 TYPE REF TO CL_WD_INPUT_FIELD.
DATA INPUT2 TYPE REF TO CL_WD_INPUT_FIELD.
DATA MATRIX TYPE REF TO CL_WD_MATRIX_DATA.
DATA MATRIX_HEAD TYPE REF TO CL_WD_MATRIX_HEAD_DATA.
DATA LCR TYPE REF TO CL_WD_TRANSPARENT_CONTAINER.
LCR ?= VIEW->GET_ELEMENT( 'ROOTUIELEMENTCONTAINER' ).
INPUT1 = CL_WD_INPUT_FIELD=>NEW_INPUT_FIELD( BIND_VALUE = 'INPUT1'
ID = 'INP1'
).
MATRIX_HEAD = CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA( INPUT1 ).
INPUT1->SET_LAYOUT_DATA( MATRIX_HEAD ).
LR_LABEL1 = CL_WD_LABEL=>NEW_LABEL(
ID = 'LB1'
LABEL_FOR = 'INP1'
TEXT = 'LABEL1'
).
MATRIX_HEAD = CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA( LR_LABEL1 ).
LR_LABEL1->SET_LAYOUT_DATA( MATRIX_HEAD ).
INPUT2 = CL_WD_INPUT_FIELD=>NEW_INPUT_FIELD( BIND_VALUE = 'INPUT2'
ID = 'INP2'
).
MATRIX = CL_WD_MATRIX_DATA=>NEW_MATRIX_DATA( INPUT2 ).
INPUT2->SET_LAYOUT_DATA( MATRIX ).
LR_LABEL2 = CL_WD_LABEL=>NEW_LABEL(
ID = 'LB2'
LABEL_FOR = 'INP2'
TEXT = 'LABEL2'
).
MATRIX = CL_WD_MATRIX_DATA=>NEW_MATRIX_DATA( LR_LABEL2 ).
LR_LABEL2->SET_LAYOUT_DATA( MATRIX ).
LCR->ADD_CHILD( LR_LABEL1 ).
LCR->ADD_CHILD( LR_LABEL2 ).
LCR->ADD_CHILD( INPUT1 ).
LCR->ADD_CHILD( INPUT2 ).
total = LCR->number_of_children( ).
do total times.
indx = 10 - sy-index.
uie = LCR->get_child( index = indx ).
if uie is not initial.
id = uie->id.
if id eq 'LB3' or id eq 'LB4' OR id eq 'INP3' or id eq 'INP4'.
LCR->REMOVE_child( index = indx ).
endif.
endif.
enddo.
************************************************************************
ELSEIF FS_VAL EQ 'Companyowned'.
DATA LCR1 TYPE REF TO CL_WD_TRANSPARENT_CONTAINER.
LCR1 ?= VIEW->GET_ELEMENT( 'ROOTUIELEMENTCONTAINER' ).
INPUT3 = CL_WD_INPUT_FIELD=>NEW_INPUT_FIELD( BIND_VALUE = 'INPUT3'
ID = 'INP3'
).
MATRIX_HEAD = CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA( INPUT3 ).
INPUT3->SET_LAYOUT_DATA( MATRIX_HEAD ).
LR_LABEL3 = CL_WD_LABEL=>NEW_LABEL(
ID = 'LB3'
LABEL_FOR = 'INP3'
TEXT = 'LABEL3'
).
MATRIX_HEAD = CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA( LR_LABEL3 ).
LR_LABEL3->SET_LAYOUT_DATA( MATRIX_HEAD ).
INPUT4 = CL_WD_INPUT_FIELD=>NEW_INPUT_FIELD( BIND_VALUE = 'INPUT4'
ID = 'INP4'
).
MATRIX = CL_WD_MATRIX_DATA=>NEW_MATRIX_DATA( INPUT4 ).
INPUT4->SET_LAYOUT_DATA( MATRIX ).
LR_LABEL4 = CL_WD_LABEL=>NEW_LABEL(
ID = 'LB4'
LABEL_FOR = 'INP4'
TEXT = 'LABEL4'
).
MATRIX = CL_WD_MATRIX_DATA=>NEW_MATRIX_DATA( LR_LABEL4 ).
LR_LABEL4->SET_LAYOUT_DATA( MATRIX ).
LCR1->ADD_CHILD( LR_LABEL3 ).
LCR1->ADD_CHILD( LR_LABEL4 ).
LCR1->ADD_CHILD( INPUT3 ).
LCR1->ADD_CHILD( INPUT4 ).
total = LCR1->number_of_children( ).
do total times.
indx = 10 - sy-index.
uie = LCR1->get_child( index = indx ).
if uie is not initial.
id = uie->id.
if id eq 'LB1' or id eq 'LB2' OR id eq 'INP1' or id eq 'INP2'.
LCR1->REMOVE_child( index = indx ).
endif.
endif.
enddo.
ENDIF.
thanks
sarbjeet singh
User | Count |
---|---|
87 | |
10 | |
10 | |
10 | |
7 | |
6 | |
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.