简短版本:除非我手动刷新页面,否则新条目不会出现在带有查询生成器过滤器的表中。
长版本:我有一个使用 Datasource Query Builder 的表过滤掉已标记为“完成”和“已交付”的条目。
因此模型是SystemOrders,但表的数据源是添加了过滤器的数据源(SystemOrders_HideComplete)。所有这些都运行良好。
当用户为数据库创建新条目时,他们单击“添加”按钮,打开页面片段。他们可以输入所有数据并写入数据,但当片段关闭时表不会自动刷新,并且不会显示新条目。
刷新浏览器页面或使用表(如下所列)同一页面上的自定义按钮重新加载数据源会导致显示新条目。
widget.datasource.query.clearFilters();
var datasource = app.datasources.SystemOrders_HideComplete;
datasource.load();
我尝试调整页面片段的“提交”按钮,希望它能让用户免于手动刷新页面,但这似乎也不起作用:
widget.datasource.createItem();
var datasource = app.datasources.SystemOrders_HideComplete;
datasource.load();
app.closeDialog();
我假设这可能是因为 datasource.load();命令来自片段?
任何帮助找出自动显示新条目的方法将不胜感激。
最佳答案
理论上,如果您为表使用相同的数据源并创建页面片段,则新项目应该自动附加:
// Table datasource
app.datasources.SystemOrders_HideComplete
// Page fragment datasource
app.datasources.SystemOrders_HideComplete.modes.create
如果由于某种原因你想使用不同的数据源来创建新项目,你可以将新记录推送到列表数据源(在这种情况下,你将避免对服务器的额外调用并提供 100% 保证新项目将出现在列表,即使它不适合选定的过滤器/分页/排序...):
widget.datasource.createItem({
success: function(record) {
app.datasources.SystemOrders_HideComplete.items.push(record);
app.closeDialog();
},
failure: function(error) {
// TODO: handle error
}
});
...或强制重新加载列表数据源(在这种情况下,您将获得适合您的过滤器的新数据,但可能会错过您的新项目):
widget.datasource.createItem({
success: function(record) {
app.datasources.SystemOrders_HideComplete.load();
app.closeDialog();
},
failure: function(error) {
// TODO: handle error
}
});
关于google-app-maker - 添加条目后表未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45177765/