Important Notice - Forums is archived
To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
Grid in GridDetailRow Problem with hidable Columns
Hi Guys,
I have the requerement to have a Grid in the detail Row of another Grid, and the inner Grid has to have hideable columns.
However, if I define any column as hideable in the inner Grid, it will not be visible in the inner Grid. Also the inner grid context menu (for showing/hiding columns) is always empty and almost not visible.
you can play areound with
innerGrid.getColumn(Locale_PROPERTY_language).setHidable(true);
innerGrid.getColumn(Locale_PROPERTY_country).setHidable(true);
innerGrid.getColumn(Locale_PROPERTY_NAME).setHidable(true);
by commenting the lines out, to see different strage behavior
See my Code Example:
package com.example.myapplication;
import javax.servlet.annotation.WebServlet;
import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.annotations.Widgetset;
import com.vaadin.data.Item;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.Component;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Grid.DetailsGenerator;
import com.vaadin.ui.Grid.RowReference;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
@Theme("mytheme")
@Widgetset("com.example.myapplication.MyAppWidgetset")
public class MyUI extends UI {
@Override
protected void init(VaadinRequest vaadinRequest) {
final VerticalLayout layout = new VerticalLayout();
Grid gridWithInnerGrid = getGridWithInnerGrid();
layout.addComponent(gridWithInnerGrid);
this.setContent(layout);
}
private Grid getGridWithInnerGrid() {
Grid grid = new Grid();
grid.setContainerDataSource(getLocaleContainer());
grid.setDetailsGenerator(new DetailsGenerator() {
@Override
public Component getDetails(RowReference rowReference) {
Grid innerGrid = new Grid();
innerGrid.setContainerDataSource(getLocaleContainer());
innerGrid.getColumn(Locale_PROPERTY_language).setHidable(true);
innerGrid.getColumn(Locale_PROPERTY_country).setHidable(true);
innerGrid.getColumn(Locale_PROPERTY_NAME).setHidable(true);
return innerGrid;
}
});
Object itemId = grid.getContainerDataSource().firstItemId();
grid.setDetailsVisible(itemId, !grid.isDetailsVisible(itemId));
grid.getColumn(Locale_PROPERTY_language).setHidable(true);
grid.getColumn(Locale_PROPERTY_NAME).setHidable(true);
grid.getColumn(Locale_PROPERTY_NAME).setHidable(true);
grid.setSizeFull();
return grid;
}
@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet {
}
public static final Object Locale_PROPERTY_language = "language";
public static final Object Locale_PROPERTY_country = "country";
public static final Object Locale_PROPERTY_NAME = "name";
private static final String Locales =
{ { "fi", "FI", "Finnish" }, { "de", "DE", "German" }, { "en", "US", "US - English" }, { "sv", "SE", "Swedish" } };
/**
* @return test container with Locale
*/
public static IndexedContainer getLocaleContainer() {
IndexedContainer localeContainer = new IndexedContainer();
localeContainer.addContainerProperty(Locale_PROPERTY_language, String.class, null);
localeContainer.addContainerProperty(Locale_PROPERTY_country, String.class, null);
localeContainer.addContainerProperty(Locale_PROPERTY_NAME, String.class, null);
for (int i = 0; i < Locales.length; i++) {
String id = Locales[i][2];
Item item = localeContainer.addItem(id);
item.getItemProperty(Locale_PROPERTY_language).setValue(Locales[i][0]);
item.getItemProperty(Locale_PROPERTY_country).setValue(Locales[i][1]);
item.getItemProperty(Locale_PROPERTY_NAME).setValue(Locales[i][2]);
}
return localeContainer;
}
}[/i][/i][/i][/i]
this was supposed to the a workaround but didnt work either: https://vaadin.com/forum#!/thread/13546676
A ticket was already created here: https://dev.vaadin.com/ticket/19856#ticket
Related topic: https://vaadin.com/forum/#!/thread/13161643/13161642