我正在研究 Vaadin,我正在尝试在网格中打印数据。我想选择这个数据。以前我想编辑数据,但它似乎是在编辑之前。[我看了看:https ://vaadin.com/docs/-/part/framework/components/components-grid.html#figure.components .grid.editing]
但是当我有超过一行时,它总是会编辑或选择我的第一行。
但是当我尝试编辑/选择第二行(只需单击它)时,我有:
那应该是用户 ID:2,名字:wc,姓氏:sdsdf,...
我的代码是:
grid.setItems(getUsersInfo());
grid.addColumn(UserInfo::getUserId).setCaption("User Id");
grid.addColumn(UserInfo::getFirstname).setCaption("First Name")
.setEditorComponent(firstNameEditor, UserInfo::setFirstName);
grid.addColumn(UserInfo::getLastname).setCaption("Last Name")
.setEditorComponent(lastNameEditor, UserInfo::setLastName);
grid.addColumn(UserInfo::getEmail).setCaption("Email")
.setEditorComponent(emailEditor, UserInfo::setEmail);
grid.addColumn(UserInfo::getAddress).setCaption("Address")
.setEditorComponent(addressEditor, UserInfo::setAddress);
grid.addColumn(UserInfo::getPhonenumber).setCaption("Phone Number");
grid.setSizeFull();
grid.setSelectionMode(SelectionMode.SINGLE);
grid.getEditor().setEnabled(true);
setCompositionRoot(grid);
任何帮助都会非常有帮助!谢谢
编辑:我的类 UserInfo 通常是一个用户对象(getter 和 setter):
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
super.setFirstname(firstName);
}
我的类 _UserInfo 是从 CayenneDataObject 扩展而来的:
public void setFirstname(String firstname) {
writeProperty(FIRSTNAME_PROPERTY, firstname);
}
public String getFirstname() {
return (String)readProperty(FIRSTNAME_PROPERTY);
}
编辑2:当我只打印数据而不进行编辑时,当我选择一个数据时,我遇到了同样的问题,我的代码是:
final VerticalLayout vlayout = new VerticalLayout();
userInfo = getUsersInfo();
grid.setItems(userInfo);
grid.addColumn(UserInfo::getUserId).setCaption("User Id");
grid.setSizeFull();
vlayout.addComponent(new HeaderMenu());
vlayout.addComponent(grid);
vlayout.setSizeFull();
setCompositionRoot(vlayout);
编辑3:逐步调试后,我发现问题出在哪里:问题是我在哪里得到我的userId:
错误是:
Exception processing async thread queue
Exception processing async thread queue
org.eclipse.jdt.internal.debug.core.model.JDIType cannot be cast to org.eclipse.jdt.debug.core.IJavaReferenceType
上 :
public int getUserId() {
return (getObjectId() != null && !getObjectId().isTemporary()) ? (short) getObjectId()
.getIdSnapshot().get(USERID_PK_COLUMN) : null;
}