我有DataGrid
與TextInputCell
列,使用ListDataProvider
。當單元格中的值發生更改時,我正在創建一個RequestContext
並將RequestContext#edit
與正在編輯的行的原始實體一起調用。然後,我將代理的可變版本中的字段設置爲編輯單元格中的值。這一切都很好,我可以將更改成功保存到數據庫。但是,在保存更改之前,在服務器上修改該值,並將修改後的實體(DTO)發送回客戶端。在Receiver#onSuccess
方法中,我將新實體存儲在列表數據提供程序中,然後致電ListDataProvider#refresh
。但DataGrid
中顯示的值不會更改以反映服務器上的修改。我查看了提供給TextInputCell#getValue
方法的值,它是正確的,也就是說,它是包含在服務器上應用的修改的值。GWT DataTable TextInputCell未顯示正確的值
我試圖在網格中創建另一個列,它只是一個TextCell
,併爲該單元格的getValue
提供了相同的值;在這種情況下,刷新顯示值正確更新,反映了服務器返回的修改值。
所以,我的問題是:細胞在哪裏獲得它的價值?當我查看我的TextInputCell#getValue
方法返回的值時,它看起來是正確的值,但該值並未顯示在屏幕上(屏幕上顯示的值是發送請求之前代理對象中的值到服務器)。
注:我看着這個question,但它沒有在我的情況。