0

私は2セットのコードを持っています:

  1. データを保存します

myapp.activeDataWorkspace.ProjectHandlerData.saveChanges();

2.ページを更新します

window.location.reload();

これらの両方を 1 つのボタンで一緒に機能させる方法はありますか? 現在、[保存] をクリックすると、ブラウザーは変更を認識し、(ページを離れてもよろしいですか) メッセージまたはそれらの行に沿った何かがポップアップします..

乾杯

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();
    }
});

これらの 2 つのオプション 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 に答える