【发布时间】:2016-06-22 17:41:55
【问题描述】:
HandsOnTable 的 contextMenu 在与 web2py 一起使用时似乎有问题。如果数据源是脚本中的数组,则上下文菜单有效;如果数据源是其他任何东西 - 即来自 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 应用程序中)实例化表格,表格会正确构建并且上下文菜单会显示所有项目,但“在上方插入行”和“在下方插入行”被禁用并显示为灰色. (数据来自调用该视图的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 应用程序中正常工作?
【问题讨论】:
-
假设
data是一个 web2pyRows对象,data.json()正是您所需要的(即 JSON 格式的记录数组)。我建议您查看最终呈现的 HTML,看看 JSON 是否看起来不正确。 -
你可以尝试一下 contextMenu: true
-
感谢您的回复,Anthony.. Anthony:JSON 在 HTML 中看起来不错。我相信这是一个 HandsOnTables 问题,因为表格可以完美呈现,而且我认为如果 JSON 搞砸了就不会。
-
谢谢,马祖。我使用了两个上下文菜单行:
contextmenu = true和contextmenu = ["row_above","row_below","remove_row"]。在这两种情况下,当数据在 javascript 函数中指定为数组时,菜单可以正常工作,但是当通过 web2py.我用data = {{=XML(data.json())}}翻译 web2py 数组
标签: web2py handsontable