>라디오 버튼으로 필드 컨트롤을 하려고 하는데요.
>만약에 라디오 버튼 1번을 선택했을 경우 특정필드가 read-only만 되고 라디오 버튼 2를 선택시 input필드로
>변환 하는 컨드롤을 주고 싶은데요.
>문제는 viewContainerUIElement 로 생산한 필드도 라디오 버튼으로 위에서 같은 컨트롤을 할 수 있는건가요?
>할 수 있다면 어떤게 해야하나요?
>웹딘 고수님께 급히 질문드립니다. ㅠ.ㅠ
ViewContainerElement를 사용한다는 걸 못 봤네요...
Container안에 들어갈 또 다른 View가 생기므로 댓글에 올린 방법으로는 안될테고 아래 방법을 참고하시길 바랍니다.
1. ComponentController
1) Attributes Tab에 등록.
MV_VIEW01 Type Ref to IF_WD_VIEW (Public)
MV_VIEW02 Type Ref to IF_WD_VIEW (Public)
2) Methods Tab에 등록.
Parameters :
P_FLAG Importing CHAR1
P_VIEW Importing Refto IF_WD_VIEW
METHOD set_view .
IF p_flag = '1'.
wd_this->mv_view01 = p_view.
ELSE.
wd_this->mv_view02 = p_view.
ENDIF.
ENDMETHOD.
------------------------------------------------------------
Parameters :
P_FLAG Importing CHAR1
P_VIEW Importing Refto IF_WD_VIEW
METHOD change_inputfield .
DATA: input01 TYPE REF TO cl_wd_input_field,
input02 TYPE REF TO cl_wd_input_field.
input01 ?= p_view->get_element( 'INPUT_01' ).
input02 ?= p_view->get_element( 'INPUT_02' ).
IF p_flag = '1'.
input01->set_read_only( EXPORTING value = abap_false ).
input02->set_read_only( EXPORTING value = abap_true ).
ELSE.
input01->set_read_only( EXPORTING value = abap_true ).
input02->set_read_only( EXPORTING value = abap_false ).
ENDIF.
ENDMETHOD.
2. 각 View의 WDDOMODIFYVIEW 메소드 내에 아래 소스 추가
1) 라디오 버튼이 있는 View
check first_time = abap_true.
wd_comp_controller->set_view( p_view = view
p_flag = '1' ).
2) ViewContainerUIElement 안에 들어갈 View
check first_time = abap_true.
wd_comp_controller->set_view( p_view = view
p_flag = '2' ).
wd_comp_controller->change_inputfield( p_view = view
p_flag = '1' ).
3. Radio button의 on select 이벤트 메소드에 아래 소스 추가.
=> controller의 change_inputfield 메소드를 Call한다.
다만 radio button에 따라 flag값을 변경해주면 된다.
DATA: node TYPE REF TO if_wd_context_node,
i_idx TYPE i,
l_flag TYPE char1.
node = wd_context->get_child_node( 'COLOR' ).
i_idx = node->get_lead_selection_index( ). "RadioButton의 Index번호.
IF i_idx = 1.
l_flag = 1.
ELSE.
l_flag = 2.
ENDIF.
wd_comp_controller->change_inputfield(
p_flag = l_flag
p_view = wd_comp_controller->mv_view02
).