Browse Source

Map column components by id (#9624)

Fixes #9452
tags/8.1.0.rc1
Teemu Suo-Anttila 6 years ago
parent
commit
4d085fd8b3
1 changed files with 6 additions and 5 deletions
  1. 6
    5
      server/src/main/java/com/vaadin/ui/Grid.java

+ 6
- 5
server/src/main/java/com/vaadin/ui/Grid.java View File

@@ -872,7 +872,7 @@ public class Grid<T> extends AbstractListing<T> implements HasComponents,

@Override
public void destroyData(T item) {
removeComponent(item);
removeComponent(getGrid().getDataProvider().getId(item));
}

@Override
@@ -885,7 +885,7 @@ public class Grid<T> extends AbstractListing<T> implements HasComponents,
};

private Binding<T, ?> editorBinding;
private Map<T, Component> activeComponents = new HashMap<>();
private Map<Object, Component> activeComponents = new HashMap<>();

private String userId;

@@ -1038,12 +1038,13 @@ public class Grid<T> extends AbstractListing<T> implements HasComponents,
// Make Grid track components.
if (renderer instanceof ComponentRenderer
&& presentationValue instanceof Component) {
addComponent(item, (Component) presentationValue);
addComponent(getGrid().getDataProvider().getId(item),
(Component) presentationValue);
}
return ((Renderer<P>) renderer).encode(presentationValue);
}

private void addComponent(T item, Component component) {
private void addComponent(Object item, Component component) {
if (activeComponents.containsKey(item)) {
if (activeComponents.get(item).equals(component)) {
// Reusing old component
@@ -1055,7 +1056,7 @@ public class Grid<T> extends AbstractListing<T> implements HasComponents,
getGrid().addExtensionComponent(component);
}

private void removeComponent(T item) {
private void removeComponent(Object item) {
Component component = activeComponents.remove(item);
if (component != null) {
getGrid().removeExtensionComponent(component);

Loading…
Cancel
Save