HandsOnTable上下文菜单:如何使其与web2py数据一起使用?

时间:2016-03-08 16:46:12

标签: web2py handsontable

当与web2py一起使用时,HandsOnTable的contextMenu似乎有问题。如果数据源是脚本中的数组,则上下文菜单可以正常工作;如果数据源是其他任何东西 - 即来自web2py - ,则上下文菜单不起作用。例如:

当我用此实例化HandsOnTable时,上下文菜单可以工作:

document.addEventListener("DOMContentLoaded", function() {
var data = [
        {
            "id":1,
            "last_name":"Abbrederis",
            "first_name":"Jason",
            "pos":"WR"

        },
        {
            "id":2,
            "last_name":"Abbrederis",
            "first_name":"Jason",
            "pos":"WR"
        },
        {
            "id":3,
            "last_name":"Adams",
            "first_name":"Davante",
            "pos":"WR"
        }
        ];

var hotElement = document.getElementById('list');
datatable = new Handsontable(hotElement, {
    data: data,
    contextMenu: ['row_above','row_below','remove_row','undo','redo'],

    <snip other table configuration>

但是,如果我使用此实例化表(在web2py应用程序中),表格会正确构建,上下文菜单会显示所有项目,但是&#34;在&#34;上面插入行。和&#34;在&#34;下方插入行被禁用并变灰。 (数据来自调用此视图的web2py函数,并且是标准的web2py数据库检索。)

document.addEventListener("DOMContentLoaded", function() {

var data = {{=XML(data.json())}}

var hotElement = document.getElementById('list');
datatable = new Handsontable(hotElement, {
    data: data,
    contextMenu: ['row_above','row_below','remove_row','undo','redo'],

    <snip other table configuration>

我记得在某处看到这种行为是已知的,只有当表的数据是数组时,上下文菜单才能正常工作。那是对的吗?是否有任何解决方法可以使上下文菜单在web2py应用程序中正常工作?

1 个答案:

答案 0 :(得分:0)

问题与web2py或HandsOnTables无关;这是我对maxRows如何工作的误解。我将maxRows设置为一个值,数据集的行数大于maxrows值。因此,当然,不能再向表中添加行,并且add_row函数不起作用。通过删除maxrows值,它可以正常工作。我的错误......