【问题标题】:Table Not Updating After Adding Entry添加条目后表未更新
【发布时间】:2017-07-19 07:32:12
【问题描述】:

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


长版:我有一个表,它使用 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();命令来自片段?

任何帮助找出让新条目自动出现的方法将不胜感激。

【问题讨论】:

    标签: google-app-maker


    【解决方案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
      }
    });
    

    【讨论】:

    • 将页面片段调整为 app.datasources.SystemOrders_HideComplete.modes.create 工作完美。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    相关资源
    最近更新 更多