ハンズオンテーブルグリッドを更新したい。データベースのデータで満たされたドロップダウンのある列がいくつかあります。しかし、私のページには、このデータベースにデータを挿入する最初のグリッドがあり、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).'},';
?>]
hot.render();
を呼び出すだけです。ここで、hot
はHandsontable
オブジェクトを指します。
私にとってはうまくいきました。
わかった。ドロップダウンのソースを動的に更新する必要があります。これは、次のコードで簡単にできるはずです。
hot2.updateSettings({
columns: [{
type: 'dropdown',
source: arrayTest
}]
})
arrayTest
に新しい値が追加された後、必ずこれを追加してください。これで、準備が整います。これがあなたの fiddle で、正しい場所に行が追加されています。
ObserveChangesオプションをtrueに設定してみてください。これにより、データソースの変更が検出され、グリッドが再度レンダリングされます。
https://github.com/handsontable/handsontable/wiki/Options#constructor-options
受け入れられた答えは私にはうまくいきませんでしたが、次のコードはうまくいきました。
let hot = new Handsontable(this.hotTableComponentTest.nativeElement, {
data: [["","",""]] ,
...
});
if (value && value.length>0 && this.hot) {
this.hot.getInstance().loadData(value);
this.hot.getInstance().render();
}