2017-04-12 73 views
0

我正在研究Vaadin, 我正在嘗試在網格中打印數據。我想選擇這些數據。以前我想編輯數據,但它似乎在編輯之前。[我看看:https://vaadin.com/docs/-/part/framework/components/components-grid.html#figure.components.grid.editing]爲什麼我沒有良好的行爲,當我選擇與Vaadin網格?

但是,當我有更多的一行,它總是會編輯或選擇我的第一行。

見:在任何編輯/選擇,它打印好的價值觀: enter image description here

但是,當我嘗試編輯/選擇第二行(只要按一下就可以了),我有: enter image description here 應是用戶ID:2,第1名: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:逐步調試步驟後,我發現這裏是問題: 的問題是,我讓我的用戶名:

的錯誤是:

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; 
} 

回答

0

我做了一個糟糕的錯誤!我不需要在對象UserInfo中定義getter和sette,我應該從_userInfo獲取數據

相關問題