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. [Swust OJ 1125]--又见GCD(数论,素数表存贮因子)

    题目链接:http://acm.swust.edu.cn/problem/1125/ Time limit(ms): 1000 Memory limit(kb): 65535   Descriptio ...

  2. USACO Prime Palindromes 构造回文数

    这道题目一点也不卡素数的判断 就是朴素的sqrt(n) 也不卡 所以~放心的用吧. 构造回文的时候看了HINT 其中是这么写的: Generate palindromes by combining d ...

  3. 17.1.1 How to Set Up Replication

    17.1.1 How to Set Up Replication 17.1.1.1 Setting the Replication Master Configuration 17.1.1.2 Sett ...

  4. 【Leetcod】Unique Binary Search Trees II

    给定结点数n,结点值为1,2,...,n,求由这些结点可以构成的所有二叉查找树. Given n, generate all structurally unique BST's (binary sea ...

  5. 开源 免费 java CMS - FreeCMS1.9 职位管理

    项目地址:http://code.google.com/p/freecms/ 职位管理 管理职位,实现招聘功能. 1. 职位管理 从左側管理菜单点击职位管理进入. 2. 加入职位 在职位列表下方点击& ...

  6. grep命令參数及使用方法

    功能说明:查找文件中符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...

  7. sql2008R2sp1局域网镜像环境实操(无见证服务器)

    环境介绍: 我的电脑:sql2008r2sp1_32 129.186.110.37 OS win2003 SP2 Enterprise     做主体服务器, 暂叫ServerA 服务器:    sq ...

  8. java 发送邮件 email相关操作代码测试,生成复杂格式邮件,发送邮件相关操作

    项目源码下载:http://download.csdn.net/detail/liangrui1988/6720047 效果图: 相关代码: test1 package com.mail; impor ...

  9. [转]mysql慢查询日志

    原文链接:http://www.cnblogs.com/zhangjing0502/archive/2012/07/30/2615570.html 参考博文:http://blog.chinaunix ...

  10. [ASP.NET]以iTextSharp手绘表格并产生PDF下载

    原文 [ASP.NET]以iTextSharp手繪表格並產生PDF下載 大家使用iTextSharp的機緣都不太一樣, 由於單位Crystal Report的License數量有限主管要我去找一個免費 ...