我想创建一个Vaadin 8网格,我可以使用滑块(类似于this example)编辑Amount (2)
列中的值。
我使用以下代码创建网格。
fun createGrid(): Grid<Concept> {
val grid = Grid<Concept>()
val dataProvider = ListDataProvider<Concept>(ctl.getConcepts())
grid.dataProvider = dataProvider
grid.addColumn(Concept::getName)
.setId("ID")
.setCaption("ID")
grid.addColumn(Concept::getDescription)
.setId("desc")
.setCaption("Description")
grid.addColumn(Concept::getOutput)
.setId("amountNumber")
.setCaption("Amount")
val conceptAmountditor = Slider()
conceptAmountditor.setWidth(100.0f, Sizeable.Unit.PERCENTAGE)
conceptAmountditor.min = 0.0
conceptAmountditor.max = 100.0
grid.addColumn(Concept::getOutput, ProgressBarRenderer())
.setId("amountBar")
.setCaption("Amount (2)")
.setEditorComponent(
conceptAmountditor,
Concept::setOutput
)
.setEditable(true)
grid.setSizeFull()
return grid
}
但是当我点击各行时,不会出现任何滑块。
我的代码出了什么问题?当我双击特定行时,如何将进度条转换为滑块?
答案 0 :(得分:1)
这有效:
val amount2Col = grid.addColumn(Concept::getOutput, amount2ColRenderer)
.setId("amountBar")
.setCaption("Amount (2)")
val binder = grid.editor.binder
val amount2ColSlider = Slider()
val amount2Binding: Binder.Binding<Concept, Double> = binder.bind(
amount2ColSlider, Concept::getOutput, Concept::setOutput
)
amount2Col.setEditorBinding(amount2Binding)
amount2Col.setEditable(true)
grid.editor.setEnabled(true)
有关详细信息,请参阅this page上的“在网格内编辑项目”部分。