javascript — обновить handsontable

Я хочу обновить сетку handsontable. У меня есть несколько столбцов с раскрывающимся списком данных моей базы данных. Но на моей странице у меня есть первая сетка, которая вставляет данные в эту базу данных, и я получаю их во второй сетке. Но так как моя вторая сетка не обновлена, я не могу получить последнее значение, которое просто вставляю в первую сетку.

Итак, как я могу обновить содержимое handsontable, пожалуйста?

РЕДАКТИРОВАТЬ :

Я сделал 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

Решение

Просто позвони hot.render();, где hot относится к Handsontable объект.

Отлично сработало для меня.

8

Другие решения

Я получаю это сейчас. Вы хотите динамически обновлять источники для выпадающих. Это должно быть легко с помощью следующего кода:

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

Не забудьте добавить это после arrayTest имеет новые значения, и вы должны быть готовы к работе. Вот твой играть на скрипке с добавленной строкой в ​​нужном месте.

1

Попробуйте установить для параметра наблюдаемых изменений значение true. Это должно обнаружить изменения в источнике данных и снова отобразить сетку.

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

0

Принятый ответ не работал для меня, но следующий код работал нормально.

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
По вопросам рекламы [email protected]