如何在 Vaadin 流 (Vaadin 14) Grid 中创建可以在 ValueChangeEvent 中写回的 TextField ?(不使用网格编辑器) [英] How to create a TextField in Vaadin flow (Vaadin 14) Grid that could write back in ValueChangeEvent ? (not using Grid Editor)

查看:30
本文介绍了如何在 Vaadin 流 (Vaadin 14) Grid 中创建可以在 ValueChangeEvent 中写回的 TextField ?(不使用网格编辑器)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将 TextField 作为可编辑组件放在 Grid 的每一行中.但我不知道如何在 ValueChange 事件中回写?

I am trying to put TextField as Editable component in each row of Grid. but I don't know how to write back in the ValueChange event ?

下面是我的代码

    SerializableBiConsumer<emisTextField, PO_DETL_GRID> consumer =
        (tf , detl) ->{ 
            tf.setValue( detl.getP_NO());               
    } ; 
    SerializableSupplier<emisTextField> ss = () -> {
        emisTextField tf =new emisTextField();
        tf.addValueChangeListener(c->{
        
            //how to write back newValue to my PO_DETL_GRID item ?
                
        });
        return tf;
    };
    ComponentRenderer cr = new ComponentRenderer<emisTextField,PO_DETL_GRID>(ss,consumer);
    
    Grid.Column p_no_column = edit_grid.addColumn( cr);
    
    grid.addColumn(cr);

推荐答案

你可以使用这个替代构造函数:

You could use this alternative constructor:

SerializableFunction<MyItem, TextField> function = item -> {
    TextField tf = new TextField();
    tf.setValue(item.getMyValue());
    tf.addValueChangeListener(e -> item.setMyValue(e.getValue()));
    return tf;
};
ComponentRenderer<TextField, MyItem> cr = new ComponentRenderer<>(function);

这篇关于如何在 Vaadin 流 (Vaadin 14) Grid 中创建可以在 ValueChangeEvent 中写回的 TextField ?(不使用网格编辑器)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆