OOALV 中BUTTON_CLICK 的实现方式

在OOALV中可以把某一个单元格设置成button的样式,通单击实现一些功能效果

CLASS : CL_GUI_ALV_GRID

ENVENT  <BUTTON_CLICK >

一、首先在内表中添加一个char4 类型的字段(chk),用于button输出

DATA:BEGIN OF GT_RECRUIT OCCURS 0 ,
       CHK       TYPE CHAR4 ,
       CELLBTN   TYPE LVC_T_STYL,
     END OF GT_RECRUIT.

二、把该字段设置成为button样式

FORM SETEDIT_CELL .
  DATA LS_CELL TYPE LVC_S_STYL .
  LS_CELL-MAXLEN = 10 .
  LS_CELL-FIELDNAME = 'CHK'.
  LS_CELL-STYLE     = CL_GUI_ALV_GRID=>MC_STYLE_BUTTON.
  INSERT LS_CELL INTO TABLE GT_CELL .
ENDFORM.

三、循环内表给 CELLBTN  赋值,同时可为按钮赋值

  LOOP AT GT_RECRUIT.
    GT_RECRUIT-CNO = GS_COMPANY-CNO .
    IF GT_RECRUIT-FACE EQ GC_X.
      GT_RECRUIT-CHK = '已邀请'.
    ELSE.
      GT_RECRUIT-CHK = '邀请面试'.
    ENDIF.
    GT_RECRUIT-CELLBTN[] = GT_CELL[] .
    MODIFY GT_RECRUIT.
  ENDLOOP.

四、在layout中赋值    GS_LAYOUT-STYLEFNAME = 'CELLBTN'.

五、具体功能实现

CLASS LCL_COMPT DEFINITION.
  PUBLIC SECTION.
    METHODS: HANDLE_BUTTON_CLICK FOR EVENT BUTTON_CLICK
                            OF CL_GUI_ALV_GRID
                                IMPORTING ES_COL_ID
                                          ES_ROW_NO.
ENDCLASS.

CLASS LCL_COMPT IMPLEMENTATION.
*BUTTON_CLICK.
  METHOD HANDLE_BUTTON_CLICK.
    PERFORM FM_BUTTON_CLICK USING ES_COL_ID
                                  ES_ROW_NO.
  ENDMETHOD.

ENDCLASS.
FORM FM_BUTTON_CLICK  USING PS_COL_ID TYPE LVC_S_COL
                            PS_ROW_NO TYPE LVC_S_ROID.
*返回行号
   READ TABLE GT_RECRUIT INDEX PS_ROW_NO-ROW_ID.
 

ENDFORM.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章