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

时间:2014-08-28 16:05:08

标签: javascript lightswitch-2013

我有两套代码:

  1. 保存数据
  2.   

    myapp.activeDataWorkspace.ProjectHandlerData.saveChanges();

    2.刷新页面

    window.location.reload();
    

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

    欢呼声

2 个答案:

答案 0 :(得分: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,为你提供了许多非常酷的能力来影响应用程序中的导航。

答案 1 :(得分:0)

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

例如:(向订单屏幕添加订单)

  1. 点击按钮添加订单
  2. 输入所需的详细信息。
  3. 点击您的自定义保存按钮并附上您的验证。
  4. 在您的commitChanges();写入以下行之前
  5. screen.OrderLine.OrderTable.details.refresh();“这需要适用于您的方案”
  6. 当您返回到屏幕时,您的详细信息应该已更新(例如,总价值现在会在我的情况下显示正确的值)
  7. 希望这会有所帮助...