• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
^ω^SAp傻X^o^
博客园    首页    新随笔    联系   管理    订阅  订阅
web_dynpro_循环TREE2:

首先定义树的根和节点

 

在布局里设置根和节点(跟和节点同类型,设置根不可见)以及叶子

先在视图属性里设置节点和叶子表:

 

在初始化时填充节点表和叶子表并给根节点赋值:

method WDDOINIT .
data:
     lr_current_node    type ref to if_wd_context_node,
     lr_current_element type ref to if_wd_context_element.
* Fill tables with the structure of the tree
    fill_foldertable( ).
    fill_filetable( ).
    lr_current_node    = wd_context->get_child_node( 'FOLDER' ).
    lr_current_element = lr_current_node->create_element( ).
    lr_current_node->bind_element( lr_current_element ).
    lr_current_node->set_lead_selection( lr_current_element ).
    lr_current_element->set_attribute( name = 'TEXT' value =
  'Rootknoten' ).
* Create the root node
    create_node(
      exporting
        cur_element = lr_current_element
        parent_key  = 'Drives' ).

“设置展开树.先将树节点展开属性绑定到一个布尔类型的属性上

lo_nd_tree = wd_context->get_child_node( name = wd_this->wdctx_tree ).
      lo_el_tree = lo_nd_tree->get_element( ).
      lv_is_expanded = 'X'.
      lo_el_tree->set_attribute(
        name =  `IS_EXPANDED`
        value = lv_is_expanded ).
Endmethod.

 

先填充节点表:

method FILL_FOLDERTABLE .
DATA: wa_folder TYPE ihttpnvp.
* field NAME corresponds to child key
* field VALUE corresponds to parent key
    wa_folder-name  = 'C'.”节点名
    wa_folder-value = 'Drives'.”上级节点名
    APPEND wa_folder to wd_this->mt_folder_struc.
endmethod.

再根据节点来填充叶子:

method FILL_FILETABLE .
DATA: wa_file TYPE ihttpnvp.
* field NAME corresponds to child key
* field VALUE corresponds to parent key
    wa_file-name  = 'start.bat'.”叶子名
    wa_file-value = 'C'.”叶子的上级节点
    APPEND wa_file to wd_this->mt_file_struc.
Endmethod.

 

创建树(根据节点类型来分别创建节点和叶子):需要传入参数(当前节点和上级节点)

 

method CREATE_NODE .
DATA:
      lr_cur_node TYPE REF TO if_wd_context_node,
      folder_item TYPE ihttpnvp,
      file_item   TYPE ihttpnvp.
* create the new node by requesting it as a child node
    lr_cur_node = cur_element->get_child_node( 'FILE' ).
* create elements for files
    LOOP AT wd_this->mt_file_struc INTO file_item
         WHERE value = parent_key.
      create_file_element(“调用方法来创建叶子
        EXPORTING
          file_item = file_item
          cur_node  = lr_cur_node
        ).
    ENDLOOP.
    lr_cur_node = cur_element->get_child_node( 'FOLDER_CONTENT' ).
* Create elements for folders
    LOOP AT wd_this->mt_folder_struc INTO folder_item
         WHERE value = parent_key.
      create_folder_element(“调用方法来创建节点
        EXPORTING
          folder_item = folder_item
          cur_node  = lr_cur_node ).
    ENDLOOP.
Endmethod.

 

创建叶子(参数为当前节点和叶子表):

参数

method CREATE_FILE_ELEMENT .
"显示叶子节点
DATA: lr_cur_element TYPE REF TO if_wd_context_element.
  lr_cur_element = cur_node->create_element( ).
  lr_cur_element->set_attribute( name = 'TEXT' value = file_item-name ).
  cur_node->bind_element( new_item = lr_cur_element set_initial_elements
= abap_false ).
Endmethod.

 

创建节点(参数为根节点和节点表)

 

method CREATE_FOLDER_ELEMENT .
data: lr_cur_element type ref to if_wd_context_element.
  lr_cur_element = cur_node->create_element( ).
  lr_cur_element->set_attribute( name = 'TEXT' value = folder_item-name
).
  cur_node->bind_element( new_item = lr_cur_element
                          set_initial_elements = abap_false ).
Endmethod.

 

在展示树的时候,需要对节点进行展开事件绑定到方法

 

参数是

 

method ONACTIONLOAD_CHILDREN .
data parent_key type string.
    data children_loaded type wdy_boolean.
* check that the children of the same node weren't loaded a second
* time
    context_element->get_attribute( exporting name = 'CHILDREN_LOADED'
   importing value = children_loaded ).
    check children_loaded = abap_false.
    context_element->set_attribute( name = 'CHILDREN_LOADED' value =
   abap_true ).
context_element->get_attribute( exporting name = 'TEXT' importing value
= parent_key ).
* create the child nodes
    create_node(
      exporting
        cur_element = context_element
        parent_key  = parent_key ).
Endmethod.

对叶子进行点击事件绑定

 

 

参数:

 

method onactionselect .”获取的是当前点击的节点名(叶子不在此列)
  data:
        tree type ihttpnvp,
      text    type string,
      text1    type string,
      text2    type string,
      children_loaded type boolean.
  data  node type ref to if_wd_context_node.
  data  element type ref to if_wd_context_element.
  if context_element is initial.
    exit.
  else.
    context_element->get_attribute(
            exporting name = 'NAME'
            importing value = text ).
    node = context_element->get_node( )."获取当前点击节点的信息
    data in type i value 0.
    clear in.
    loop at wd_this->mt_tree_struc into tree.
      if tree-name = text.
        in = in + 1.
      endif.
    endloop.
    call method node->set_lead_selection_index
      exporting
        index = in.
    data lo_el_context type ref to if_wd_context_element.
    data ls_context type wd_this->element_context.
    data lv_textofselectionnode2 type wd_this->element_context-textofselectionnode2.
    lo_el_context = wd_context->get_element( ).
    lv_textofselectionnode2 = text.
    lo_el_context->set_attribute(
      name =  `TEXTOFSELECTIONNODE2`
      value = lv_textofselectionnode2 ).
    if text = '计划进度管理'.
      exit.
    else.
      element = node->get_parent_element( )."获取单击节点的父节点名
      element->get_attribute("获取单击节点父节点的名
         exporting name = 'NAME'
         importing value = text1 ).
      wd_context->set_attribute(
   exporting
     name = 'TEXTOFSELECTEDNODE'
     value = text1 ).
    endif.
  endif.
Endmethod.

 

给树上加节点和叶子:

method onactionaddelement .
  data: lo_element type ref to if_wd_context_element,
  lo_node type ref to if_wd_context_node,
  file type ihttpnvp.
  "获取当前节点
  data lo_el_context type ref to if_wd_context_element.
  data ls_context type wd_this->element_context.
  data lv_textofselectionnode2 type wd_this->element_context-textofselectionnode2.
  lo_el_context = wd_context->get_element( ).
  if lo_el_context is initial.
    exit.
  else.
    lo_el_context->get_attribute(
  exporting
    name =  `TEXTOFSELECTIONNODE2`
  importing
    value = lv_textofselectionnode2 ).
  Endif.

“获取输入的叶子名
  data lv_changenode type wd_this->element_context-changenode.
  lo_el_context = wd_context->get_element( ).
  if lo_el_context is initial.
    exit.
  else.
    lo_el_context->get_attribute(
  exporting
    name =  `CHANGENODE`
  importing
    value = lv_changenode ).
  endif.
  file-name = lv_changenode.
  file-value = lv_textofselectionnode2.
  append file to wd_this->mt_node_struc.
  file-name = 'TEST'.
  file-value = lv_textofselectionnode2.
  append file to wd_this->mt_tree_struc.
  lo_element = wd_context->get_element( ).
  lo_node = wd_context->get_child_node( name = 'TREE' ).
  lo_element = lo_node->create_element( ).
  lo_node->bind_element( lo_element ).
  lo_node->set_lead_selection( lo_element ).
  lo_element->set_attribute(
  exporting name = 'NAME' value = '计划进度管理' ).
  create_node( exporting cur_element = lo_element parent_key = 'Drives' ).
endmethod.

^_^很多人都把资料锁进了note里,以后还怎么百度呢^_^
posted on 2013-04-11 22:06  ^ω^SAP傻X^o^  阅读(376)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3