Beginners question, I apologize in advance. Using Vaadin 24.3.10, I create a Grid like follows:
usersGrid = new Grid<>();
usersGrid.setItems(newFesUsersDataProvider());
final Column<FesUser> userIdColumn =
usersGrid.addColumn(FesUser::getUserId).setHeader(User Id);
userIdColumn.setVisible(true);
userIdColumn.setKey(userId);
final Column<FesUser> nameColumn =
usersGrid.addColumn(FesUser::getName).setHeader(Name);
nameColumn.setVisible(true);
nameColumn.setKey(name);
Looks fine to me, but when I open the page, only the first column (“User Id”) is being displayed.
Are there any suggestions, what might go wrong, or what I could investigate?
Thanks,
Jochen
Ronny11
(Ronny Edler)
May 23, 2024, 7:00am
2
Assuming you used the Spring starter my working code looks like this
package com.example.application.views.helloworld;
import com.example.application.views.MainLayout;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.grid.Grid.Column;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.router.RouteAlias;
@PageTitle("Hello World")
@Route(value = "", layout = MainLayout.class)
@RouteAlias(value = "", layout = MainLayout.class)
public class HelloWorldView extends HorizontalLayout {
public static class User{
String name;
String id;
public User(String name, String id){this.name=name;this.id=id;}
public String getName(){return name;}
public String getId(){return id;}
}
public HelloWorldView() {
Grid<User> usersGrid = new Grid<User>();
usersGrid.setItems(
new User("Bob", "1"),
new User("Alice", "2")
);
final Column<User> userIdColumn =
usersGrid.addColumn( User::getId ).setHeader("User Id");
userIdColumn.setVisible(true);
userIdColumn.setKey("userId");
final Column<User> nameColumn =
usersGrid.addColumn(User::getName).setHeader("Name");
nameColumn.setVisible(true);
nameColumn.setKey("name");
add(usersGrid);
}
}
This is a long shot, but assuming you used a starter, make sure “name” is not the preexisting “private TextField name;” as I am not sure what are strings without quotation marks or variables in your example.
Turned out, the reason was, that my Grid was contained in a Tab, and I needed to use TabSheet.setWidthFull() (or Tab.setWidthFull(), don’t remember exactly).