2017-01-16 19 views
0

追加ボタンをクリックすると、新しく追加された表項目(別名行)を選択できるようにしたいと考えています。私の主な目的は、それを選択可能かつ編集可能にすることです(しかし、その行だけが今やテーブル全体です)。ここVaadin - 追加項目を選択可能にする(編集可能)

テーブルコードである:

  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; 
     } 

上記のコードは、選択された行に対してうまく動作するが、どのように新たに追加された行を直接選択して編集可能にできますか?

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); 

      } 
    }); 

答えて

1

Object itemId = createNewBean(); //新しいアイテムIDとして設定できる一意のIDを返す新しいBeanを作成します。

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 

私はそれが役に立ちそうです。

+0

ありがとうございます!それはまだうまくいきませんでしたが、それは良い考えです – natso

+0

実際には、新しい項目に一意のIDを設定しますが、選択可能にしません。 – natso

関連する問題