web-dev-qa-db-ja.com

ハンズオンテーブルを更新する

ハンズオンテーブルグリッドを更新したい。データベースのデータで満たされたドロップダウンのある列がいくつかあります。しかし、私のページには、このデータベースにデータを挿入する最初のグリッドがあり、2番目のグリッドにデータを取得します。しかし、2番目のグリッドが更新されていないため、最初のグリッドに挿入した最後の値を取得できません。

では、どうすればハンズオンテーブルのコンテンツを更新できますか?

編集:

私は自分の問題を説明するjsfiddleを作成しました: http://jsfiddle.net/9onuhpn7/10/ jsFiddleで動作し、配列にプッシュすると値を取得できます。しかし、私の実際のアプリケーションとデータベースでは、それは機能しません。

したがって、配列の代わりに、これをコードに含めます(機能しますが、更新されません):

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

hot.render();を呼び出すだけです。ここで、hotHandsontableオブジェクトを指します。

私にとってはうまくいきました。

9
Shimmy

わかった。ドロップダウンのソースを動的に更新する必要があります。これは、次のコードで簡単にできるはずです。

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

arrayTestに新しい値が追加された後、必ずこれを追加してください。これで、準備が整います。これがあなたの fiddle で、正しい場所に行が追加されています。

1
ZekeDroid

ObserveChangesオプションをtrueに設定してみてください。これにより、データソースの変更が検出され、グリッドが再度レンダリングされます。

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

0
mpusarla

受け入れられた答えは私にはうまくいきませんでしたが、次のコードはうまくいきました。

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