简体   繁体   English

Vaadin-使添加的项目为可选(和可编辑)

[英]Vaadin - Make added item selectable (and editable)

I would like to make my newly added table item (aka row) selectable as soon as it is added by clicking the add-button. 我想通过单击添加按钮使我新添加的表项(又名行)一经选择即可。 My main purpose is to make it both selectable and editable (but only that row, now the whole table). 我的主要目的是使其既可以选择又可以编辑(但仅此行,现在是整个表)。

Here is the table code: 这是表代码:

            public Table createTable(BeanContainer<Long, PS_SECTION> beans) {       
            table.setImmediate(true);
            table.setContainerDataSource(beans);
            table.setColumnHeader("PS_SECTION", "ID");
            table.setColumnHeader("NAME", "SECTION");
            table.setColumnHeader("VORDER","ORDER");

            table.addGeneratedColumn("ACTIVE", new Table.ColumnGenerator() {

                @Override
                public Object generateCell(final Table source, final Object itemId,
                        Object columnId) {              

            table.setTableFieldFactory(new DefaultFieldFactory() {

                @Override
                public Field<?> createField(Container container, final Object itemId, Object propertyId, Component uiContext) {

                        if (!itemId.equals(table.getValue())) {
                               return null;
                        }
                               Field<?> field = super.createField(container, itemId, propertyId, uiContext);
                               field.setBuffered(true);

                    return field;
                }
            });


            table.addValueChangeListener(new Property.ValueChangeListener() {           
                @Override
                public void valueChange(Property.ValueChangeEvent event) {              
                        if (table.getValue() != null) {                     
                            editButton.setVisible(true);
                        } 
                        else {
                            editButton.setVisible(false);
                        }           
                }
            });

            table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
                  @Override
                  public void itemClick(ItemClickEvent itemClickEvent) {
                        if (itemClickEvent.isDoubleClick() && !table.isEditable()) {
                          table.setValue(itemClickEvent.getItemId());
                          configureEditable(true);  
                        // THE FUNCTION THAT MAKES THE SELECTED ROW EDITABLE
                          editButton.setVisible(false);
                          addButton.setVisible(false);
                        }               
                  }
                });


      // ....SOME MORE TABLE ATTRIBUTES HERE....

            return table;
        }

The code above works fine for the selected rows, but how can I make the newly added row directly selected and editable?? 上面的代码对于选定的行来说效果很好,但是如何使新添加的行直接被选中并可以编辑呢?

addButton.addClickListener(new ClickListener() {            
        @Override
            public void buttonClick(ClickEvent event) {                                     
                addList();  //HERE THE ROW (AND THE BEAN) IS ADDED                  

            /**
             * What to put here?
             *
             */
                configureEditable(true);

            }
    });

Object itemId = createNewBean(); //create a new bean, that returns a unique id that can be set as new item id. //创建一个新bean,该bean返回可以设置为新项目ID的唯一ID。

table.addItem(itemId); //add this newly created item to the table
//set the column values here for this particular item
table.getItem(itemId).getProperty("column_name").setValue("column_value");
//similarly set values of other columns for this particular item

table.setValue(itemId); //this selects the just added row

I hope it helps. 希望对您有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM