web-dev-qa-db-fra.com

Actualiser une poignée de main

Je veux actualiser une grille tactile. J'ai quelques colonnes avec une liste déroulante remplie avec les données de ma base de données. Mais dans ma page, j'ai une première grille qui insère des données dans cette base de données et je les ai dans ma deuxième grille. Mais comme ma deuxième grille n'est pas actualisée, je ne peux pas obtenir la dernière valeur que je viens d'insérer dans la première grille.

Alors, comment puis-je actualiser le contenu d'un contrôle manuel s'il vous plaît?

EDIT:

J'ai fait un jsfiddle qui illustre mon problème: http://jsfiddle.net/9onuhpn7/10/ Sur mon jsFiddle, cela fonctionne et je peux obtenir les valeurs lorsque je les envoie dans le tableau. Mais avec ma vraie application, et avec une base de données, ça ne marche pas.

Donc, au lieu d’un tableau, j’ai ceci dans mon code (ça marche mais ce n’est pas rafraîchi):

columns:[
<?php 

    $conn_string = "Host=localhost port=5432 dbname=test_postgre user=postgres password='1234'";
    $dbconn = pg_connect($conn_string);

    $sql = "SELECT ".$colonne." FROM public.".$tablevar."";
    $res = pg_query($sql) or die("Pb avec la requete: $sql");

    $data = pg_fetch_all($res);

    $indexedOnly = array();

    foreach ($data as $row) {
                $indexedOnly[] = array_values($row);
    }
    echo '{type:\'dropdown\',';
    echo 'source:'.json_encode($indexedOnly).'},';



?>]
7
Erlaunis

Il suffit d'appeler hot.render();, où hot fait référence à l'objet Handsontable.

A bien fonctionné pour moi.

8
Shimmy

Je comprends maintenant. Vous souhaitez mettre à jour dynamiquement les sources pour les listes déroulantes. Cela devrait être facile avec le code suivant:

hot2.updateSettings({
    columns: [{
        type: 'dropdown',
        source: arrayTest
    }]
})

Assurez-vous d'ajouter ceci après que arrayTest a les nouvelles valeurs et vous devriez être prêt à partir Voici votre violon avec la ligne ajoutée au bon endroit.

1
ZekeDroid

Essayez de définir l'option observeChanges sur true. Cela devrait détecter les modifications dans la source de données et restituer la grille.

https://github.com/handsontable/handsontable/wiki/Options#constructor-options

0
mpusarla

La réponse acceptée n'a pas fonctionné pour moi, mais le code suivant a bien fonctionné.

let hot = new Handsontable(this.hotTableComponentTest.nativeElement, {
      data: [["","",""]]   ,
      ...
    });

if (value && value.length>0 && this.hot) {
      this.hot.getInstance().loadData(value);
      this.hot.getInstance().render();
    }
0
dasfdsa