Components get sometimes missing in table when scrolling through it

Hi,
I have a problem with ComboBoxes as components in a table containig about 250 entries. When scrolling through the table changing the entry of a combobox sometimes some entries becoming missing see the attached screenshot. The webkonsole on Firefox then displays the following error:

"Tue Feb 24 12:07:50 GMT+100 2015 com.vaadin.client.VConsole
SEVERE: Widget is still attached to the DOM after the connector (ComboBoxConnector (3779)) has been unregistered. Widget was removed." adminend

"Tue Feb 24 12:07:50 GMT+100 2015 com.vaadin.client.VConsole
SEVERE: Widget is still attached to the DOM after the connector (ComboBoxConnector (3780)) has been unregistered. Widget was removed." adminend

"Tue Feb 24 12:07:50 GMT+100 2015 com.vaadin.client.VConsole
SEVERE: Widget is still attached to the DOM after the connector (HorizontalLayoutConnector (3781)) has been unregistered. Widget was removed." adminend

I use a straight forward method to create the table and adding the entries, do not know if that might be the reason:

[code]
public void refreshMembershipContractSettingsTable(int pageIndex) {
tableTabsheet.setSelectedTab(membershipSuggestionTable);
membershipSuggestionTable.removeAllItems();
for(MembershipContractSettingsObject object : this.membershipContractCreationAssistentUiController.getMembershipContractSettingsObjects()) {

        String name = object.getMember().getUser().getSurname()+"  "+object.getMember().getUser().getFirstname();
        int age = XDateFormatter.getAge(object.getMember().getUser().getDateOfBirth());
        String season = this.membershipContractCreationAssistentUiController.getSeason().getName();
        ComboBox invoiceRecipientSelection = invoiceRecipients(object);
        ComboBox membershipSelection = membership(object);
        
        HorizontalLayout layout = new HorizontalLayout();
        layout.setSpacing(false);
        layout.setMargin(false);
        
        Button billButton = null;
        if(object.getMembershipContract() != null) {
            billButton = new Button();
            ....
        }
        
        Button deleteSelectedObject = new Button("");
        ....
        
        membershipSuggestionTable.addItem(new Object[] {
                invoiceRecipientSelection,
                name,
                age,
                season,
                membershipSelection,
                layout
        }, object);
    }
    
    membershipSuggestionTable.setCurrentPageFirstItemIndex(pageIndex);
}

[/code]And these are the methods for creating the two comoboboxes:

[code]
private ComboBox invoiceRecipients(final MembershipContractSettingsObject object) {
final ComboBox select = new ComboBox();
select.setWidth(100, Unit.PERCENTAGE);
select.setImmediate(true);

    //
    // Add the invoice recipient to the combobox
    //
    OrganizationCustomer invoiceRecipient = OrganizationCustomerUtils.getOrganizationCustomer(object.getInvoiceRecipient()); // We must get the OrganizationCustomer in this way, because if we use the OrganizationCustomer directly from the object, the recipients are not equal when checked by the ComboBox, seams that different class loaders load the object
    select.addItem(invoiceRecipient);
    select.setItemCaption(invoiceRecipient, invoiceRecipient.getUser().getSurname()+" "+invoiceRecipient.getUser().getFirstname());
    
    //
    // Add the member to the combobox if not equal with the invoice recipient
    //
    if(object.getInvoiceRecipient() != object.getMember()) {
        OrganizationCustomer customer = OrganizationCustomerUtils.getOrganizationCustomer(object.getMember());
        select.addItem(customer);
        select.setItemCaption(customer, object.getMember().getUser().getSurname()+" "+object.getMember().getUser().getFirstname());
    }
   
    //
    // Set the right value
    //
    select.setValue(invoiceRecipient);
        
    
    select.addValueChangeListener(new ValueChangeListener() {

        private static final long serialVersionUID = -7540529751065827281L;

        @Override
        public void valueChange(ValueChangeEvent event) {
            if(select.getValue() != null) {
                object.setInvoiceRecipient((OrganizationCustomer) select.getValue());
            }
            
        }});
    
    return select;
}

[/code]and:

[code]
private ComboBox membership(final MembershipContractSettingsObject object) {
final ComboBox select = new ComboBox();
select.setWidth(100, Unit.PERCENTAGE);
select.setImmediate(true);

    //
    // Create a list with all possible Memberships
    //
    for(Membership membership : memberships) {
        select.addItem(membership);
        select.setItemCaption(membership, membership.getName());
        
        if(object.getMembership() != null && object.getMembership().equals(membership))
            select.setValue(membership);
    }
    
    select.addValueChangeListener(new ValueChangeListener() {

        /**
         *
         */
        private static final long serialVersionUID = -7265092025371537829L;

        @Override
        public void valueChange(ValueChangeEvent event) {
            if(select.getValue() != null) {
                object.setMembership((Membership) select.getValue());
            }
            
        }});
    
    return select;
}

[/code]I hope somenone can give me a hint,
thanks,
Florian
18436.png

I too have been having this issue. If anyone can help it’d be appreciated.

Me too. When I need to refresh some content in a table the generated property added dont render. I tried to use refreshRowCache(), markAsDirty() or refreshing the datasource, but none of those worked.