基本的に、エンティティを保存する AddEdit 画面 (ブラウズ画面からロード) があります。保存アイコンをクリックすると、エンティティは実際に保存されましたが、「保存操作に失敗しました」というメッセージが表示され、参照画面で保存されたエンティティ リストを構成するテーブルが更新されませんでした。
どうやら、変更が永続化されていないようです。
基本的に、エンティティを保存する AddEdit 画面 (ブラウズ画面からロード) があります。保存アイコンをクリックすると、エンティティは実際に保存されましたが、「保存操作に失敗しました」というメッセージが表示され、参照画面で保存されたエンティティ リストを構成するテーブルが更新されませんでした。
どうやら、変更が永続化されていないようです。
追加/編集画面は、挿入/更新の前にデータを検証します。
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」関数に更新を追加します。