首页 > 其他 > 详细

进阶: 案例八: Drag and Drop(动态)

时间:2015-03-26 12:41:40      阅读:327      评论:0      收藏:0      [点我收藏+]

1、节点

技术分享

2、UI

技术分享

3、

技术分享

4、方法:

技术分享
METHOD wddomodifyview .
  DATA: lo_container TYPE REF TO cl_wd_uielement_container,
        lo_grid_layout TYPE REF TO cl_wd_grid_layout,
        lo_grid_data TYPE REF TO cl_wd_grid_data,
        lo_drag_source_info TYPE REF TO cl_wd_drag_source_info,
        lo_drop_target_info TYPE REF TO cl_wd_drop_target_info,
        lo_child TYPE REF TO cl_wd_uielement,
        lt_children TYPE cl_wd_uielement=>tt_uielement,
        l_sourceidx TYPE i,
        lw_dragdata TYPE string,
        lw_tagetidx TYPE i.
  IF first_time = abap_true.
* for Group1
    lo_container ?= view->get_element( GROUP1 ).
    lo_grid_layout ?= lo_container->get_layout( ).
    lo_grid_layout->set_on_drop( DROPIT1 ).
** create drap-source-info
    lo_drag_source_info = cl_wd_drag_source_info=>new_drag_source_info(
    bind_enabled = GRID_DRAG_ENABLED
    view = view
    tags = gridcell1 ).
** set drap-source-info
    lo_grid_layout->set_drag_source_info( lo_drag_source_info ).
** create drop-target-info
    lo_drop_target_info = cl_wd_drop_target_info=>new_drop_target_info(
    bind_enabled = GRID_DROP_ENABLED "This is not neccessary)
    view = view
    tags = gridcell*).
** set drop-target-info
    lo_grid_layout->set_drop_target_info( lo_drop_target_info ).
* for Group2
    lo_container ?= view->get_element( GROUP2 ).
    lo_grid_layout ?= lo_container->get_layout( ).
    lo_grid_layout->set_on_drop( DROPIT2 ).
** create drap-source-info
    lo_drag_source_info = cl_wd_drag_source_info=>new_drag_source_info(
    bind_enabled = GRID_DRAG_ENABLED
    view = view
    tags = gridcell2 ).
** set drap-source-info
    lo_grid_layout->set_drag_source_info( lo_drag_source_info ).
** create drop-target-info
    lo_drop_target_info = cl_wd_drop_target_info=>new_drop_target_info(
    bind_enabled = GRID_DROP_ENABLED
    view = view
    tags = gridcell*
    ).
** set drop-target-info
    lo_grid_layout->set_drop_target_info( lo_drop_target_info ).
  ENDIF.
  IF wd_this->perform_drop IS NOT INITIAL.
    IF wd_this->tags = gridcell2.
      lo_container ?= view->get_element( GROUP2 ).
    ELSE.
      lo_container ?= view->get_element( GROUP1 ).
    ENDIF.
**get the source Index
    lt_children = lo_container->get_children( ).
    LOOP AT lt_children INTO lo_child.
      l_sourceidx = sy-tabix.
      lo_grid_data ?= lo_child->get_layout_data( ).
      lw_dragdata = lo_grid_data->get_drag_data( ).
      IF lw_dragdata = wd_this->source_data.
        EXIT.
      ENDIF.
    ENDLOOP.
**Modify
    CASE wd_this->target_id.
      WHEN TEST1.
**Trigger by himself:group1
        IF wd_this->tags = gridcell1.
          IF wd_this->offset = -1.
            lw_tagetidx = wd_this->index.
          ELSE.
            lw_tagetidx = wd_this->index + 1.
          ENDIF.
          IF l_sourceidx <> lw_tagetidx.
            lo_container ?= view->get_element( GROUP1 ).
            lo_container->remove_child( index = l_sourceidx ).
            lo_container->add_child( the_child = lo_child index = lw_tagetidx ).
          ENDIF.
        ELSE.
**Trigger by group2
          lo_container ?= view->get_element( GROUP2 ).
          lo_container->remove_child( index = l_sourceidx ).
          lo_container ?= view->get_element( GROUP1 ).
          lo_container->add_child( the_child = lo_child index = lw_tagetidx ).
        ENDIF.
      WHEN TEST2.
**Trigger by himself:group2
        IF wd_this->tags = gridcell2.
          IF wd_this->offset = -1.
            lw_tagetidx = wd_this->index.
          ELSE.
            lw_tagetidx = wd_this->index + 1.
          ENDIF.
          IF l_sourceidx <> lw_tagetidx.
            lo_container ?= view->get_element( GROUP2 ).
            lo_container->remove_child( index = l_sourceidx ).
            lo_container->add_child( the_child = lo_child index = lw_tagetidx ).
          ENDIF.
        ELSE.
**Trigger by group1
          lo_container ?= view->get_element( GROUP1 ).
          lo_container->remove_child( index = l_sourceidx ).
          lo_container ?= view->get_element( GROUP2 ).
          lo_container->add_child( the_child = lo_child index = lw_tagetidx ).
        ENDIF.
    ENDCASE.
  ENDIF.
  CLEAR:wd_this->perform_drop.
ENDMETHOD.
View Code

5、方法中创建的动态事件DROPIT1

参数:

技术分享

代码:

技术分享
method ONACTIONDROPIT1 .
  wd_this->source_data = data.
  wd_this->INDEX = INDEX.
  wd_this->OFFSET = OFFSET.
  wd_this->TAGS = TAGS.
  wd_this->ID = ID.
  wd_this->TARGET_ID = TEST1.
  wd_this->PERFORM_DROP = X.
endmethod.
View Code

6、
方法中创建的动态事件DROPIT2

参数:

技术分享

代码:

技术分享
method ONACTIONDROPIT2 .
  wd_this->source_data = data.
  wd_this->INDEX = INDEX.
  wd_this->OFFSET = OFFSET.
  wd_this->TAGS = TAGS.
  wd_this->ID = ID.
  wd_this->TARGET_ID = TEST2.
  wd_this->PERFORM_DROP = X.
endmethod.
View Code

 

进阶: 案例八: Drag and Drop(动态)

原文:http://www.cnblogs.com/caizjian/p/4368010.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!