Web2Py一个vi中的多个智能网格

2024-03-29 02:07:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在web2py中构建一个视图,其中包含来自同一个控制器的多个smartgrid对象。它可以很好地显示它们,但是每当我试图在第二个表上创建一个新记录时,它不允许输入,它似乎只是在刷新页面。同样尝试在第二个表上搜索实际上也会填充第一个表的搜索字段,所以很明显,对于哪个smartgrid是哪个,存在一些混淆。在

在我的研究中,我遇到了多表单技术,使用流程来命名每个表单,如下所示:

form1.process(formname='form1')

然而,这种方法似乎不适用于smartgrid对象(据我所知)。我想我可以试着创造我自己的新生活SQLFORM.grid,但很遗憾我不能更好地利用智能电网,因为他们已经拥有了我需要的一切。在

感谢任何帮助。在


Tags: 对象方法视图表单记录页面控制器流程
2条回答

允许网格机制处理生成的url

/app/default/grid1.load/view/record/1?_signature=88ce76119afc68bbb141fce098cbc2eaf39289e3

对于单个记录的视图, 必须唯一标识轴网。 所以用formname关键字构造网格。示例:

def manage_records():
    q_record = (db.record.au==auth.user_id)
    return dict(record = SQLFORM.grid(q_record, formname='records'))

def manage_reports():
    q_report = (db.report.au==auth.user_id)
    return dict(record = SQLFORM.grid(q_report, formname='reports'))

正如安东尼所指出的,您可以使用LOAD()功能。 如果希望窗体与主页一起加载,可以省略ajax=True。 在包含两个轴网的视图中:

^{pr2}$

正如您所注意到的,不能以这种方式将两个网格放在同一个页面上,因为网格使用URL来确定其当前状态。不过,您可以考虑将每个网格放在Ajax组件中,而不是iframe方法。在主视图文件中:

{{=LOAD('default', 'grid1.load', ajax=True)}}
{{=LOAD('default', 'grid2.load', ajax=True)}}

当然,您也可以通过指定URL参数来区分同一操作中的两个网格。在

相关问题 更多 >