2017-10-06 25 views
2

スライダー(this exampleに類似)を使用して、列Amount (2)の値を編集できるVaadin 8グリッドを作成したいとします。私は、グリッドを作成するために、次のコードを使用私のスライダーエディタが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に "グリッド内の項目の編集" を参照してください。

関連する問題