0

如果我使用 JPA 和 Vaadin 10 Grid,它会以任意顺序将所有列添加到显示中。

grid = new Grid<>(Thing.class);
add(grid);

如何让它只添加一两列,并控制顺序、大小、宽度等。

我的“东西”看起来像

@Entity
public class Thing {

   private static final Logger log = LoggerFactory.getLogger(Thing.class);

   @Id
   @GeneratedValue
   @Column(unique = true)
   private Long id;

   @Column(nullable = false, updatable = false)
   @CreationTimestamp
   private Instant creationDate;
   ...

是否有我应该使用的注释,或者我需要隐藏列,或者删除所有列并手动添加它们?我在网上和这里搜索过,没有发现任何似乎相关的东西。

4

1 回答 1

3

您可以使用等设置网格列 grid.setColumns("dataField1","dataField2","dataField3") 。如果要更改字段的显示名称,可以使用grid.getColumnByKey("dataField1").setHeader("Custom Text");

import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.router.Route;

@Route
public class MainView extends VerticalLayout {

private static final long serialVersionUID = 3461787310452366610L;
private Grid<Student> sGrid = new Grid<>(Student.class);
private TextField filter = new TextField();
private HorizontalLayout toolbar = new HorizontalLayout();
private Button newStudent = new Button("Add");
@Autowired
StudentRepository repo;

public MainView() {
    setSizeFull();
    initComponents();
    add(toolbar);
    add(sGrid);
}

private void initComponents() {
    sGrid.setColumns("firstName", "lastName", "sid", "uid");
    sGrid.getColumnByKey("sid").setHeader("Student ID");
    sGrid.getColumnByKey("uid").setHeader("Unique ID");

    toolbar.setSizeUndefined();
    toolbar.add(filter, newStudent);

    filter.setPlaceholder("Search...");

}

@PostConstruct
private void init() {
    sGrid.setItems(repo.findAll());
}

}
于 2018-11-09T19:43:44.510 回答