0

Visual Studio 2013 LightSwitch を使用して HTML アプリケーションを構築しようとしています。「計算された」列/フィールドを HTML クライアントに表示するために数時間試行した後、それが不可能であることに気付きました。テーブルで起動するトリガーを作成することを考えましたが、アプリケーションを公開するときにプッシュされません。では、RIA クライアントを使用せずに、2 つ以上のデータソース フィールドを使用して計算し、別のフィールドに格納する最良の方法は何でしょうか? ユーザーが保存ボタンをクリックしたとき、またはフィールドに計算可能なデータが含まれているときにもトリガーできます。

たとえば、テーブル ユーザー (前):

First_Name (string)   Last_Name (string)   Stored_Full_Name (string)
John                  User                 NULL
Jane                  Doe                  NULL

ユーザーが [保存] をクリックするか、first_name と last_name が null でない場合、"Last_Name, First_Name" は同じテーブルの Stored_Full_Name 列に単一の列として格納されます。

たとえば、テーブル ユーザー (後):

First_Name (string)   Last_Name (string)   Stored_Full_Name (string)
John                  User                 User, John
Jane                  Doe                  Doe, Jane

コストやその他のアイテムを計算するために同じ手法を使用できると思いますか?

サンプルコードは大歓迎です。

4

2 に答える 2

1

これはとても簡単です。「Full Name」という表示テキストを持つ「FullName」という文字列型の画面変数を作成します。Screen の「create」メソッドを編集し、必要な値を JavaScript の変数に割り当てます。- 上記の例では、次のようなものが必要です。

screen.FullName = screen.Last_Name.value + ", " + screen.First_name.value;

次に、変数を左側のデータ タブから画面の [ユーザー] テーブルにドラッグします。

保存パイプラインの一部として計算された値を更新する必要がある場合がありますが、画面が再描画されるたびに create() メソッドを起動する必要があります。これを Users テーブル内の null 可能な列に保存したい場合は、フィールド値を新しい値に割り当てるだけで保存できますが、これがテーブルの正規化を壊すので、わざわざする理由がわかりません。クライアント側で保存された変更を前処理する関数で、次のコードを追加して、とにかくこれを行います。

screen.FullNameTableField = screen.FullName.value;

行内の「編集」および「削除」レコードレベルのテーブルエントリを作成するために、非常によく似た手法を使用します。

HTH

于 2014-08-28T19:29:07.387 に答える
1

単純な計算されたプロパティの場合、Users プロトタイプでいつでも関数を作成できます。このブログ投稿で説明されています: http://lobfactory.wordpress.com/2013/05/03/computed-fields-in-the-html5-client/

于 2013-12-13T09:31:57.073 に答える