添加条目后表未更新

时间:2017-07-18 21:55:12

标签: google-app-maker

简短版本:除非我手动刷新页面,否则新条目不会出现在带有查询生成器过滤器的表中。

长版本:我有一个使用Datasource Query Builder的表来过滤掉已标记为已完成和已发送的条目。

因此该模型是 SystemOrders ,但该表的数据源是添加了过滤器的数据源( SystemOrders_HideComplete )。所有这一切都很好。

当用户为数据库创建新条目时,他们单击“添加”按钮,打开页面片段。他们可以输入所有数据并将其写入,但是当Fragment关闭并且不显示新条目时,表不会自动刷新。

刷新浏览器页面或使用与表(下面列出的)相同的页面上的自定义按钮重新加载数据源会导致新条目显示。

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();命令来自片段?

任何有关确定自动显示新条目的方法的帮助都将非常感激。

1 个答案:

答案 0 :(得分:1)

理论上,如果您为表使用相同的数据源并创建页面片段,那么新项目应自动附加:

// 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
  }
});