Я хочу обновить сетку 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).'},';
?>]
Просто позвони hot.render();
, где hot
относится к Handsontable
объект.
Отлично сработало для меня.
Я получаю это сейчас. Вы хотите динамически обновлять источники для выпадающих. Это должно быть легко с помощью следующего кода:
hot2.updateSettings({
columns: [{
type: 'dropdown',
source: arrayTest
}]
})
Не забудьте добавить это после arrayTest
имеет новые значения, и вы должны быть готовы к работе. Вот твой играть на скрипке с добавленной строкой в нужном месте.
Попробуйте установить для параметра наблюдаемых изменений значение 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();
}