问题是,我希望我的will复选框列的一些单元格将是可编辑的,一些单元格将是不可编辑的,这取决于一些属性。
我将采取以下步骤来实现所需的结果:
1)将属性READONLY类型WDY-BOOLEAN添加到相应的节点(属性检查类型WDY-BOOLEAN已经添加)。
2)然后在我的代码中,我检查我的表行中的一些条件,并分配属性READONLY值abap_true或abap_false。
3)然后我将我的节点与表绑定。表填写正确,我已签入调试器。
4)配置我的alv:
DATA: lo_table_settings TYPE REF TO if_salv_wd_table_settings,
lo_column_settings TYPE REF TO if_salv_wd_column_settings,
lo_column TYPE REF TO cl_salv_wd_column.
lo_column_settings ?= lv_value.
lo_table_settings ?= lv_value.
lo_column = lv_value->if_salv_wd_column_settings~get_column( 'CHECK' ).
DATA lr_checkbox TYPE REF TO cl_salv_wd_uie_checkbox.
" create checkbox
CREATE OBJECT lr_checkbox
EXPORTING checked_fieldname = 'CHECK'.
" make our table is editable
lo_table_settings->set_read_only( abap_false ).
lo_column = lo_column_settings->get_column( 'CHECK' ).
" Creating UI Elmenent 'INPUT FIELD' to make the column editable
DATA: lr_input_field TYPE REF TO cl_salv_wd_uie_input_field.
CREATE OBJECT lr_input_field EXPORTING value_fieldname = 'CHECK'.
lr_checkbox->set_read_only_fieldname( value = 'READONLY' ).
lv_value->if_salv_wd_column_settings~delete_column( ID = 'READONLY' ).但是它不起作用,复选框列的所有单元格都是可编辑的,并且我没有得到复选框列的不可编辑单元格。
发布于 2013-07-30 13:39:47
要使字段只读或可编辑,只需将字段B的值设置为A的readonly属性即可。
因此,据我所知,您有一列是checkbox,并且您希望某些行是可编辑的,而其他行是只读的。
为此,您不需要创建输入字段,唯一需要做的就是获取复选框列引用,并将其readonly属性绑定到数据结构中的字段。
如果这仍然不起作用,请检查您的数据,检查每条记录的只读字段的值是否为'',如果是,那么当然,检查的每个单元格都是可编辑的。
发布于 2019-08-08 05:58:30
你的第一步是正确的。已将类型为WDY-BOOLEAN的属性READONLY添加到节点,并在调用栅格之前为其指定了abap_true值。
下一步是为您希望设置为可编辑的每个字段/行创建输入字段引用,并将此引用分配给字段属性READONLY,然后只为符合条件的行更改此属性。
以下是示例代码:
初始分配
loop at lt_table assigning field-symbol(<fs_table>).
<fs_table>-read_only = abap_true. " non editable
endloop.设置列可编辑性
* input type reference
data lr_input type ref to cl_salv_wd_uie_input_field.
* Retrieving all column id and reference
call method lv_value->if_salv_wd_column_settings~get_columns
receiving
value = data(lt_columns).
loop at lt_columns into ls_columns.
* Assigning column reference
data(lr_column) = ls_columns-r_column.
* Creating input field UI Element
create object lr_input
exporting
value_fieldname = ls_columns-id.
*Assigning input field to column to make it as editable
call method lr_column->set_cell_editor
exporting
value = lr_input.
* binding input field ref to READONLY field
lr_input->set_read_only_fieldname( value = "READONLY" ).
endloop.根据条件使单行可编辑
loop at lt_table assigning field-symbol(<fs_table>).
if smth = abap_true
<fs_table>-read_only = abap_false. " non editable
endif.
endloop.请查看this guide以获取参考。
https://stackoverflow.com/questions/17425111
复制相似问题