Google app maker Google Appmaker:基于所选下拉选项更新表单
我有一个AppMaker应用程序,它有一个基于一个地址表/数据源的from。我可以使用next/prev按钮获得一个表单,但将键字段(名称)替换为所有名称的下拉列表(用户可以开始键入名称跳到那里,下拉列表显示) 我的希望是,当用户从下拉列表中选择时,整个表单都会更新,下一个/上一个按钮也能正常工作(有太多的记录,只能用下一个/上一个翻页)。如果下一个/上一个功能使事情变得太复杂,我不需要它 目前下拉列表正在运行,但我无法获取下一个/上一个按钮集的索引或表单的其余部分以反映所选的下拉记录 我尝试将“onValueEdit”事件设置为如下内容Google app maker Google Appmaker:基于所选下拉选项更新表单,google-app-maker,Google App Maker,我有一个AppMaker应用程序,它有一个基于一个地址表/数据源的from。我可以使用next/prev按钮获得一个表单,但将键字段(名称)替换为所有名称的下拉列表(用户可以开始键入名称跳到那里,下拉列表显示) 我的希望是,当用户从下拉列表中选择时,整个表单都会更新,下一个/上一个按钮也能正常工作(有太多的记录,只能用下一个/上一个翻页)。如果下一个/上一个功能使事情变得太复杂,我不需要它 目前下拉列表正在运行,但我无法获取下一个/上一个按钮集的索引或表单的其余部分以反映所选的下拉记录 我尝试将
var selected = widget.value;
var idx = widget.options.indexOf(selected);
console.log("Selected: "+selected+", index = "+idx+"\n");
if(idx < 0) { //...this error is never hit
console.log("Index error - setting to zero!\n");
idx = 0;
}
widget.datasource.loadPage(idx); //...update form?
var selected=widget.value;
var idx=widget.options.indexOf(选中);
console.log(“Selected:“+Selected+”,index=“+idx+”\n”);
如果(idx<0){//…则不会命中此错误
log(“索引错误-设置为零!\n”);
idx=0;
}
widget.datasource.loadPage(idx);/。。。更新表格?
通过控制台日志记录的两个观察结果:
你能将noob引导到正确的方向吗?如果你使用默认的App-Maker表单,那么你可以看到所谓的
寻呼机实际上并不分页。它触发PreviItem/nextItem数据源方法,换句话说,它通过数据源项而不是页面进行导航。以下是App Maker文档中的引用:
nextItem:选择下一项。对于查询数据源,如果当前项是页面上的最后一项,则会加载下一个页面并选择新加载页面上的第一项
因此,如果已经加载了所有项目(将数据源的查询页面大小设置为0),则只需更改数据源中的选定项目:
//onValueEdit下拉事件
//假设表单和下拉列表共享相同的数据源
widget.datasource.selectKey(newValue.\u键);
如果你真的有很多项目,而且不可能在一次调用中加载所有项目。。。然后它将是另一个故事…我删除了此页面并重新开始,并用下拉列表替换了默认的企业名称数据字段,我将下拉列表设置为:
Options: @datasources.Addresses.items
Value: @datasources.Addresses.item
它很好用?!不知道我的原始页面发生了什么
更新:
因此,您似乎需要删除值和选项,然后重新输入它们。当您这样做时,“OK”将亮起
另外,我最初接触AppMaker的目的是构建UI和附加数据。那是我的第一个错误。您构建数据,然后让App Maker为您构建编辑/添加页面 更新:
如下图所示设置选项和值非常重要
然而,我在设置它们时遇到了麻烦(读:浪费了几个小时!),直到我使用绑定选择列表中的更多选项将它们全部清除,然后再次尝试(我甚至尝试了一个全新的应用!)。我被迫做出选择。。然后,OK按钮前的最后一个字段将可用
不确定AppMaker是否有问题,或者有什么简单的问题我不明白
我原来问题中的编码都不是必需的。
一旦设置为这种方式,绑定就如您所期望的那样工作!!
所有其他字段都设置为@datasource.item。并绑定到所选的任何项目。下拉列表也不需要任何事件设置,正如我所想。谢谢Pavel。我已将页面大小设置为零。表单和下拉列表是相同的数据。我要试试看!更新:(我有500多条记录)因此newValue没有成员“\u key”,但是.valueOf()返回所选名称的文本。但是,这仍然不会更新表单的其余部分。是否有api调用,或者我必须手动更新每个表单字段?很可能您的下拉列表的选项
属性绑定到某个字段(字符串
类型),但不绑定到记录本身,这就是为什么newValue
参数不是记录类型的原因。请为您的选项尝试此绑定。
:@datasources.MyDatasource.items
刚在一些假期后返回此@Pavel。。。所以我不得不使用“…投影->商业名称”让列表工作。使用您建议的内容只填写下拉列表中的一项,而不是所有记录?!好的,我把它改成了一个查询,它也填充了所有的值。因此,我目前将下拉值设置为“@datasource.query.filters.BusinessName.\u equals”