2014-12-20 2 views
0

только вопрос о компоненте таблицы Ваадина. У меня есть таблица, созданная с помощью TableFieldFactory, и я заметил, что если я посчитаю количество раз, которое TableFieldFactory вызывается для таблицы с, например. 8 строк и 4 столбца, я получаю 40 в результате (вместо ожидаемого 8 * 4 = 32).Использует ли Vaadin значение itemId для таблицы Table.addItem() как столбец компонента Vaadin Table UI?

Значит, Vaadin использует скрытый дополнительный столбец при создании таблицы? Включен ли этот столбец itemId для метода Table.addItem()? Во всяком случае вот код, который я использовал для поля завода:

// UI's static field 
public static int counter = 1; 

// ... UI's init() method 
tbl.setTableFieldFactory(new TableFieldFactory() { 

     @Override 
     public Field<?> createField(Container container, Object itemId, 
            Object propertyId, Component uiContext) { 
      TextField field = new TextField((String) propertyId); 

      counter++; 

      // User can only edit the "Numeric field" 
      if ("Numeric field".equals(propertyId)) { 

       field.setData(itemId); 

       // Remeber the field 
       valueFields.put((Integer) itemId, field); 

       // Focus if it is the first editable value 
       if ((Integer) itemId == 0) { 
        field.focus(); 
       } 
      } 
      else { 
       field.setReadOnly(true); 
      } 
      return field; 
     } 
    }); 
// here counter is 40 for a 8x4 table 
+0

Интересно, как вы увеличиваете счетчик, когда объявляется окончательным? – kukis

+0

О, да, извините, моя ошибка, это поле int, объявленное как статическое внутри класса UI, которое отображает таблицу, я редактирую сообщение прямо сейчас! – tonix

+0

У вас есть стол с 8x4? Этот код генерирует 32 на выходе http://pastebin.com/kjVD4gyH, какую версию ваадина вы используете? Работает для меня по 7.3 – kukis

ответ

1

Я предполагаю, что причина заключается в отложенной загрузке таблицы Vaadin. Я испытал, что при первом загрузке таблица инициализируется одной строкой (для лучшего ответа на пользователя, которого я предполагаю), после этого она повторно инициализируется с суммой ленивой загрузки (в вашем случае всей таблицы), это объясняет дополнительные 8 вызовов.

Смежные вопросы