2017-10-06 4 views
2

Je veux créer une grille Vaadin 8 dans laquelle je peux éditer la valeur dans la colonne Amount (2) en utilisant un curseur (analogue à this example).Pourquoi mon éditeur de curseur ne fonctionne pas dans la grille Vaadin 8?

Grid

J'utilise le code suivant pour créer la grille.

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 
} 

Mais quand je clique sur les lignes individuelles, aucun curseur apparaît.

Quel est le problème avec mon code? Comment puis-je transformer la barre de progression en curseur lorsque je double-clique sur une ligne particulière?

Répondre

1

Cela fonctionne:

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) 

Pour plus de détails, voir la section "Modification des éléments à l'intérieur Grille" sur this page.