2017-10-06 91 views
2

我想创建一个Vaadin 8网格,我可以在其中使用滑块(类似于this example)编辑列Amount (2)中的值。为什么我的滑块编辑器不能在Vaadin 8网格中工作?

Grid

我用下面的代码来创建网格。

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 
} 

但是,当我单击各行时,不出现滑块。

我的代码有什么问题?如何在双击特定行时将进度条变换为滑块?

回答

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

相关问题