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.

 

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