0

私が維持している LightSwitch アプリに興味深い問題があります。混乱の余地があるため、詳しく説明し、明確な質問に答えます。

新しいエントリを作成するときに、はい/いいえオプションに設定された、テーブル内のブール値のデフォルトの「フリップ スイッチ」コントロールを使用する LightSwitch AddEdit 画面があります (したがって、値として「はい」または「いいえ」が表示され、実際には 0 または 1 が保存されます)。コントロールはデフォルトで「いいえ」を示します。問題は、ユーザーが持っているアクセス許可に応じて、次のいずれかのコントロールの動作が異なることです。

1) 期待される/望ましい動作: フリップ スイッチはデフォルトで「いいえ」に設定されており、画面に触れずに画面を保存すると「いいえ」がデータベースに保存されます (ユーザーが見るものと保存されるものは一貫しており、フリップスイッチが NULL になることはありません)。

2) 予期しない動作: フリップ スイッチは「いいえ」に設定されているように見えますが、ユーザーが画面を保存しようとすると、ブール値があるため、「エラー: 続行できません。ページに検証エラーがあります」という警告が表示されます。 NULL を許可しない (関連するフリップ スイッチが [このフィールドは必須] で強調表示されます) ユーザーはフリップ スイッチ コントロールを [はい] に切り替え、[いいえ] に戻すことができます。を NULL から値に変更します)、しかし厄介なことに、NULL を許可する他のフリップ スイッチは、画面に表示される「いいえ」ではなく NULL として保存されます。これは紛らわしく、問題があり、ユーザーはすべての NULL エントリを再入力する必要があります。このバグを修正したら。

私がこれまでに行ったトラブルシューティングでは、ユーザーが設定した LightSwitch Access Control パーミッションによって動作が左右されることが示されています。ユーザーが 1 つのグループ (SystemAdministrator) にいる場合、別のグループ (DatabaseOperators) では動作 1 になり、2 になります。

また、SystemAdministrator として新しい行を追加する場合、「編集」ではなく「追加」であることを条件として表示されます。データは動作 1 として追加されます。既存のエントリを編集する場合は、両方の権限として動作 2 を取得します。

このテーブル (TableName_CanRead、TableName_CanWrite、TableName_CanInsert、TableName_CanUpdate、TableName_CanDelete、TableName_CanExecute、TableName_Filter) のデータ ソースのアクセス許可をフィルター処理する VB コードをコメント アウトしてテストしまし。 .

LightSwitch 環境に詳しい人が、この問題が発生している可能性のある別の場所を教えてくれることを期待しています。また、どこを見ればよいか、またはトラブルシューティングの手順をさらに進めるためのヒントを提供してくれることを願っています。現在、許可グループがフリップ スイッチ コントロールの動作にどのように影響を与えているかを確認できません。

4

1 に答える 1

0

私の意見では、シナリオのベストプラクティスは次のとおりです。

画面で作成されたコード ブロックで、各スイッチに次のコードを使用します。

myapp.SCREENNAME.created = function (screen) {
    if (screen.TABLENAME.theFlipSwitchA == null) {
        screen.TABLENAME.theFlipSwitchA = false;
    }

    if (screen.TABLENAME.theFlipSwitchB == null) {
        screen.TABLENAME.theFlipSwitchB = true;
    }
}

これにより、null 値が最初に正しい TRUE または FALSE 値に置き換えられ、ユーザーが変更した場合にのみ変更されます。

更に

フリップ スイッチには、選択したフリップ スイッチのプロパティでアクセスできる [はい/いいえ] と [オン/オフ] の 2 つのビューがあります。

ここに画像の説明を入力

確認すべきことの 1 つは、たとえばフォーム アプリケーションで通常行うような Name ではなく、Data Bindingプロパティを使用して値を指定することです。

ここに画像の説明を入力

于 2017-04-04T16:41:22.213 に答える