为什么我会得到这样的斧头?我该如何对它们进行分类。我使用的是瓦丁克鲁德组件(不是网格)。
Crud<OpvUser> crud = new Crud<>(OpvUser.class, createUserEditor());
crud.getGrid().addItemDoubleClickListener(e -> crud.edit(e.getItem(), Crud.EditMode.EXISTING_ITEM));
UserDataProvider dataProvider = new UserDataProvider();
crud.setDataProvider(dataProvider);
dataProvider.refreshAll();
.....
crud.getGrid().setSortableColumns();
crud.getGrid().removeColumnByKey("password");
crud.addThemeVariants(CrudVariant.NO_BORDER);
add(crud);
我假设你要更改列的顺序,因为这是从你发布的图像中脱颖而出的一件事。
Crud 组件在内部构建一个 Grid,其中的列是从传递给构造函数的 Bean 类中存在的属性自动生成的(在你的例子中)。根据 Bean 类中属性的定义方式,列的顺序可能不合适。如果要更改列的顺序,可以调用网格。对于你的示例,它应该如下所示:OpvUser
setColumnOrder
Grid<OpvUser> grid = crud.getGrid();
grid.setColumnOrder(
// Columns keys are the exact property names of the bean class
grid.getColumnByKey("id"),
grid.getColumnByKey("firstName"),
grid.getColumnByKey("lastName"),
grid.getColumnByKey("email")
);
萨沙,谢谢你帮助我。我以前尝试过这个,但它确实有效,我得到空点或什么都没发生。我认为问题出在数据提供者类中,特别是在比较器中<OpvUser>比较器(CrudFiltercrudFilter)Mthode有排序方向函数,我只能在(降序,升序)之间进行选择。你也许不能理解我的意思,因为我不擅长解释。
遗憾的是,不清楚是要更改列的顺序,还是要对行进行排序。我的答案是关于改变列的顺序。为了以编程方式对网格进行排序,我建议查看网格 API 文档,了解与排序相关的方法(vaadin.com/api/platform/22.0.0/com/vaadin/flow/component/grid/...)。如果您得到一个空指针,那么也许列键不正确(我只是从您的屏幕截图中做出假设),我建议仔细检查/调试您的列实际上具有哪些键。
它现在工作,谢谢你。是的,我的意思是对列进行排序,它为我以这种方式工作:crud.getGrid(.setColumns(“id”,“名字”,“姓氏”,“电子邮件”);crud.getGrid().setColumnOrder(crud.getGrid().getColumns());
现在的问题是我的Crud按钮消失了。我只能将按钮与项目双击列表()一起使用,但是我的行旁边的布顿图标消失了。谢谢你的帮助,如果你能再次帮助我与Crud按钮,那就太好了
这是因为您删除了带有
set列
调用的编辑列。请看一下这个例子,了解如何在CRUD中设置列:github.com/vaadin/docs/blob/latest/src/main/java/com/vaadin/...