0

基本的に、エンティティを保存する AddEdit 画面 (ブラウズ画面からロード) があります。保存アイコンをクリックすると、エンティティは実際に保存されましたが、「保存操作に失敗しました」というメッセージが表示され、参照画面で保存されたエンティティ リストを構成するテーブルが更新されませんでした。

どうやら、変更が永続化されていないようです。

4

1 に答える 1

0

追加/編集画面は、挿入/更新の前にデータを検証します。

DateTime 列 (例: 登録 DateTime、レコード作成 DateTime など) を持つ既存のレコードを更新し、LightSwitch の dateTime ピッカー コントロールを使用すると、検証エラーが発生する可能性があります。

LightSwitch の dateTime ピッカーは一部の DateTime 形式を読み取ることができないため、(DB から取得した) 値をコントロールに割り当てることができません。通常は妥当な検証エラーが表示されますが、コントロールの可視性を false に設定すると、非表示のコントロールが原因でエラーが発生することはありません。

エラーは、IE を除くほとんどのブラウザで無視されます。

バグの一種です。

解決策は、非表示のすべてのコントロールを一時的に画面に表示し、挿入/更新機能を確認することです。エラーとそのエラーの原因となったコントロールが表示されます。

コントロールの種類を Text または Edit に変更するか、値を手動で割り当てることができます (以下のコード)。

レコードを挿入/更新する独自のメソッドを作成できます。次のコードを見てください。

myapp.BrowseProducts.EditProduct_execute = function (screen) {    
    myapp.showAddEditProduct(null, {
        beforeShown: function (editNewProductScreen) {
           var selectedProduct = screen.products.selectedItem;            
           editNewProductScreen.product= selectedProduct;
        },
        afterClosed: function () {
           screen.products.refresh();
        }
    });
};

データ更新の問題を解決する「afterClosed」関数に更新を追加します。

于 2015-07-16T14:46:52.170 に答える