0

我有两组代码:

  1. 保存数据

myapp.activeDataWorkspace.ProjectHandlerData.saveChanges();

2.刷新页面

window.location.reload();

有没有办法让这两个按钮在一个按钮上一起工作,因为目前当我单击保存时,浏览器会识别更改并且(您确定要离开页面)消息或类似这些行的内容弹出..

干杯

4

2 回答 2

5

这是针对 HTML 客户端的,对吧?假设是这种情况:

saveChanges() 是一个异步操作,所以你想做:

myapp.activeDataWorkspace.ProjectHandlerData.saveChanges().then(function () {
    window.location.reload();
});

这样,它将等到完成保存更改后再重新加载屏幕。

但是,有一种更流畅的方法可以做到这一点,至少从用户的角度来看它更流畅。在编辑屏幕上,保留 Save 方法,让 LightSwitch 处理它。当用户单击保存时,它将关闭编辑屏幕,并返回到之前的位置。使用 showScreen 方法的 options 参数,我们可以改变这种行为。

更改调用编辑屏幕的方法,如下所示:

myapp.showEditProject(screen.Project, {
    afterClosed: function (editScreen) {
        myapp.showViewProject(editScreen.Project);
    }
});

这样,在关闭编辑屏幕并为您处理保存更改操作后,应用程序将自动导航到最近编辑项目的详细信息视图屏幕。

如果您想在添加新实体后刷新浏览屏幕:

myapp.showAddEditProject(null, {
    beforeShown: function (addEditScreen) {
        addEditScreen.Project = new myapp.Project();
    },
    afterClosed: function () {
        screen.Projects.load();
    }
});

这两个选项,beforeShown 和 afterClosed,为您提供了许多非常酷的功能来影响应用程序中的导航。

于 2014-09-30T23:31:00.510 回答
0

我了解到您可以从添加/编辑窗口保存,并通过执行以下操作重新加载您要返回的主页:

例如:(将订单添加到订单屏幕)

  1. 点击您的按钮添加订单
  2. 输入所需的详细信息。
  3. 点击包含验证的自定义保存按钮。
  4. 在您commitChanges();写下以下行之前:screen.OrderLine.OrderTable.details.refresh();“这需要应用于您的场景”
  5. 当您返回屏幕时,您的详细信息应该已更新(例如,在我的情况下,总值现在显示正确的值)

希望这可以帮助...

于 2016-06-02T10:25:44.047 回答