刷新手持式桌子

Refresh a handsontable

本文关键字:新手 刷新      更新时间:2023-09-26

我想刷新一个handsontable网格。我有一些列与下拉框填充了我的数据库的数据。但在我的页面中,我有一个第一个网格,它在这个数据库中插入数据,我在第二个网格中得到它们。但是由于我的第二个网格没有刷新,我无法获得我刚刚插入到第一个网格中的最后一个值。

那么如何刷新handsontable的内容呢?

编辑:

我做了一个例子来说明我的问题: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();,其中hotHandsontable对象。

我现在明白了。您需要动态更新下拉列表的源。使用下面的代码应该很容易:

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

确保在arrayTest具有新值之后添加此值,并且应该设置为go。这是您的小提琴,在正确的位置添加行

尝试将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();
    }