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 = -.
lw_tagetidx = wd_this->index.
ELSE.
lw_tagetidx = wd_this->index + .
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 = -.
lw_tagetidx = wd_this->index.
ELSE.
lw_tagetidx = wd_this->index + .
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.

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.

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.

进阶: 案例八: Drag and Drop(动态)的更多相关文章

  1. 通过HTML5的Drag and Drop生成拓扑图片Base64信息

    HTML5 原生的 Drag and Drop是很不错的功能,网上使用例子较多如 http://html5demos.com/drag ,但这些例子大部分没实际用途,本文将搞个有点使用价值的例子,通过 ...

  2. 【译】SQL Server索引进阶第八篇:唯一索引

    原文:[译]SQL Server索引进阶第八篇:唯一索引     索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就 ...

  3. 基于HTML5的Drag and Drop生成图片Base64信息

    HTML5的Drag and Drop是很不错的功能,网上使用例子较多如 http://html5demos.com/drag ,但这些例子大部分没实际用途,本文将搞个有点使用价值的例子,通过Drag ...

  4. 『HTML5梦幻之旅』 - 仿Qt演示样例Drag and Drop Robot(换装机器人)

    起源 在Qt的演示样例中看到了一个有趣的demo.截图例如以下: 这个demo的名字叫Drag and Drop Robot,简单概括而言,在这个demo中,能够把机器人四周的颜色拖动到机器人的各个部 ...

  5. Bing Maps进阶系列八:在Bing Maps中集成OpenStreetMap地图

    Bing Maps进阶系列八:在Bing Maps中集成OpenStreetMap地图 OSM(OpenStreetMap-开放街道地图)服务就是一种发布自己地图数据图片为服务的一种实现类型,开放街道 ...

  6. js进阶 9-11 select选项框如何动态添加和删除元素

    js进阶 9-11 select选项框如何动态添加和删除元素 一.总结 一句话总结: 二.js进阶 9-11 select选项框如何动态添加和删除元素 1.案例说明 2.相关知识 Select 下拉列 ...

  7. mybatis进阶案例之多表查询

    mybatis进阶案例之多表查询 一.mybatis中表之间的关系 在数据库中,实体型之间的关系主要有如下几种: 1.一对一 如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之 ...

  8. HTML5 之拖放(drag与drop)

    拖放(Drag 和 drop)是 HTML5 标准的组成部分. 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. HTML5 拖放实例 ...

  9. Android 用户界面---拖放(Drag and Drop)(三)

      设计拖放操作 本节主要内容如下: 1.  如何开始拖拽: 2.  在拖拽期间如何响应事件: 3.  如何响应落下事件: 4.  如何结束拖放操作. 开始拖拽 用户使用一个拖拽手势开始拖拽,通常是在 ...

随机推荐

  1. php开启虚拟域名功能

    1.开启apache的mod_rewrite功能 关闭注释 LoadModule rewrite_module modules/mod_rewrite.so 2.引入http-vhosts.conf文 ...

  2. Altera FPGA中的pin进一步说明

    最近END china上的大神阿昏豆发表了博文 <FPGA研发之道(25)-管脚>,刚好今天拿到了新书<深入理解Altera FPGA应用设计>第一章开篇就讲pin.这里就两者 ...

  3. android如何添加桌面图标和卸载程序后自动删除图标

    android如何添加桌面图标和卸载程序后自动删除桌面图标,这是一个应用的安装与卸载过程对桌面图标的操作,下面与大家分享下具体是如何实现的,感兴趣的朋友可以参考下哈 1:创建图标如下 Intent i ...

  4. 转:python中函数curry化

    1 柯里化(Currying) 一个函数有多个参数,我们希望能固定其中几个参数的值. from functools import partial def foo(a,b,c): return a+b+ ...

  5. 使用Jquery+EasyUI 进行框架项目开发案例解说之二---用户管理源代码分享

    使用Jquery+EasyUI 进行框架项目开发案例解说之二 用户管理源代码分享  在上一篇文章<使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享> ...

  6. cxf调用c#的webservice

    java调用c#的webservice,如今已经測试通过.并且用到了项目中. 如今把实现方式和遇到的问题分享给大家.详细源代码例如以下: JaxWsDynamicClientFactory dcf = ...

  7. GCD基本使用

    主要概念 队列 dispatch_queue_t,队列名称在调试时辅助,无论什么队列和任务,线程的创建和回收不需要程序员操作,有队列负责. 串行队列:队列中的任务只会顺序执行(类似跑步) dispat ...

  8. mysql入门记录

    mysql -h localhost(or ID) -u root -p show databases; create database <数据库名>: drop database < ...

  9. java--继承的一些笔记

    public class Person { public void display(){ System.out.println("Play Person..."); } stati ...

  10. Google出品的自动Web安全扫描程序 Skipfish 下载及安装使用方法

    Skipfish是由google出品的一款自动化的网络安全扫描工具,该工具可以安装在linux.freebsd.MacOS X系统和windows(cygwin). 谷歌工程师Michal Zalew ...