简短版本:除非我手动刷新页面,否则新条目不会出现在带有查询生成器过滤器的表中。
长版本:我有一个使用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();命令来自片段?
任何有关确定自动显示新条目的方法的帮助都将非常感激。
答案 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
}
});