博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进阶: 案例八: Drag and Drop(动态)
阅读量:6906 次
发布时间:2019-06-27

本文共 4711 字,大约阅读时间需要 15 分钟。

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

 

转载于:https://www.cnblogs.com/caizjian/p/4368010.html

你可能感兴趣的文章
Maatkit--Mysql的高级管理工具
查看>>
主要的开源镜像站点资源
查看>>
白酒防伪标签生产防窜货二维码制作印刷公司
查看>>
APP测试工具
查看>>
用NULL来构造string会出问题
查看>>
php转化输入日期为Unix 纪元到当前时间的秒数 日期筛选
查看>>
教程-经典Delphi教程网
查看>>
刨根问底:详解Hadoop核心架构(转载)
查看>>
LINUX下C语言编程基础
查看>>
《Python程序设计(第3版)》[美] 约翰·策勒(John Zelle) 第 1 章 答案
查看>>
IDEA 插件-码云
查看>>
Boost::Date_time库和time_from_string()函数的使用
查看>>
Linux定时任务crontab命令使用详解
查看>>
Example: Encoded SNMP Message - SNMP Tutorial
查看>>
【转】协方差的意义
查看>>
C#语言学习--基础部分(十八)数组参数
查看>>
MySql简单分页存储过程
查看>>
EF6 在原有数据库中使用 CodeFirst 总复习(五、生成发帖页面)
查看>>
UVA 277 Puzzle
查看>>
rancher中级(一)(rancher的存储,网络)
查看>>