Lightswitch 2013:在JS中保存然后刷新

Cre*_*er7 0 javascript lightswitch-2013

我有2套代码:

  1. 保存数据

myapp.activeDataWorkspace.ProjectHandlerData.saveChanges();

2.刷新页面

window.location.reload();
Run Code Online (Sandbox Code Playgroud)

有没有办法让这两个一起工作在一个按钮,因为目前当我点击保存,浏览器识别更改和(你确定要离开页面)消息或这些行弹出的东西..

干杯

big*_*owr 5

这是针对HTML客户端的,对吗?假设是这样的:

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

myapp.activeDataWorkspace.ProjectHandlerData.saveChanges().then(function () {
    window.location.reload();
});
Run Code Online (Sandbox Code Playgroud)

这样它将等到它重新加载屏幕之前保存更改完成.

但是,有一种更平滑的方式,至少从用户的角度来看,它更顺畅.在编辑屏幕上,保留Save方法,让LightSwitch处理它.当用户单击"保存"时,它将关闭编辑屏幕,然后返回到之前的位置.使用showScreen方法的options参数,我们可以更改该行为.

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

myapp.showEditProject(screen.Project, {
    afterClosed: function (editScreen) {
        myapp.showViewProject(editScreen.Project);
    }
});
Run Code Online (Sandbox Code Playgroud)

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

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

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

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