根据记录选择过滤页面数据源

时间:2017-03-11 18:57:34

标签: google-app-maker

我似乎在努力解决这个问题。我正在使用Google App Maker中的项目管理应用程序。我正在使用SQL数据模型。我遇到问题的应用程序部分是与项目列表页面链接的几个项目详细信息页面。我可以毫不费力地从项目列表页面转到第一个项目详细信息页面。

我在项目列表页面中有一个表格小部件,表格行的onClick代码是:

    app.datasources.Projects.selectKey(widget.datasource.item._key);
    app.showPage(app.pages.ProjectPage);

这将过滤第一个详细信息页面,其中记录的主键处于焦点。这里没问题。当我想浏览具有不同数据源的下一个详细信息页面(但我仍然需要使用相同的主键进行过滤)时,我正在努力。

如果有人可以指导我在第一个详细信息页面中创建一个按钮,当点击该按钮时,会获得当前页面中加载的项目的_key,并过滤掉焦点相同项目的另一个详细信息页面(使用其他数据模型,让我们例如,将它命名为ProjectBudgetPage)我真的很感激帮助。

这是我最近尝试导航到项目中的其他详细信息页面,这是针对onClick事件的:

     var widgets = widget.parent.descendants;
     var projectID = widgets.HiddenProjectID.text;
     var projectDataSource = app.datasources.ProjectBudgetView.item;
     projectDataSource = projectID;
     app.showPage(app.pages.ProjectInfoPage);

导致:(TypeError) : Cannot read property '__gwt_instance' of undefined at HeaderProjectTabs.HeaderContainer.InfoTabButton.onClick:5:5

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解正确,但我建议您先查看此处提供的官方App Maker模板https://developers.google.com/appmaker/templates/partner-management/,该模板提供了可用于管理合作伙伴内部列表的可立即运行的应用,但您也可以根据自己的需要进行自定义。我最近使用了该模板的大部分UI和逻辑,并且我能够将它与SQL数据模型集成,并且它的工作非常好。

我注意到,对于这个模板,他们将(widget.datasource.item._key)保存到页面自定义属性,之后您可以访问该属性。自定义属性是页面级属性,用于存储单个用户会话的数据。当您需要将多个小部件的属性绑定到单个值时,自定义属性非常有用。有关详情,请访问https://developers.google.com/appmaker/ui/binding#custom_properties

在您的场景中,您可以在ProjectInfoPage中创建新的自定义属性(字符串),然后可以将脚本添加到ProjectPage中的按钮onClick事件,以将_key或任何其他项目保存到页面属性。例如:

94.9838180542

然后你可以通过将它添加到ProjectInfoPage中的onAttach事件来获取“ProjectKey”属性:

app.pages.ProjectInfoPage.properties.ProjectKey = widget.datasource.item._key;
app.showDialog(app.pages.ProjectInfoPage);

在onAttach事件中,您可以过滤新模型或将属性值传递给服务器脚本。我相信还有其他方法,但我希望这有帮助!