0

Lightswitch でヘルプ デスク チケット プログラムを作成していますが、要求された機能の 1 つで問題が発生しています。エンド ユーザーがモバイル デバイスからチケットを送信できるように、アプリのモバイル フレンドリー バージョンを作成するように依頼されました。ほんの数画面でアプリを作成し、コードを PreProcess クエリに追加して、表示できるチケットを自分のチケットのみに制限しました。それは素晴らしく機能します。私が問題を抱えているのは、現在ログインしているユーザーを新しいチケットの送信者として割り当てることです。私はオンラインで複数のガイドを見てきましたが、それらはすべて私がやろうとしていることで終わっています。私が見つけた最も有望なのはhttp://social.msdn.microsoft.com/Forums/vstudio/en-US/47832659-4ed3-4a8c-9a62-b3ad46c8e8b4/get-logged-in-employee です現在のユーザーを画面に正常に表示できます。

課題は、Ticket.EndUser フィールドを CurrentUserName フィールドに設定することです。AddEditNewTicket画面のcreatedメソッドとbeforeApplyChangesメソッドで試してみました。

私はここ数日間、この壁に頭をぶつけ続けてきましたが、これを達成した人はいますか?


アップデート

だから、私は問題を見つけたかもしれないと思う.それを回避する方法がわからない. 新しいチケット ボタンの実行コードでは、チケットを作成し、newTicket.setEndUser(). この関数は EndUser エンティティをパラメーターとして受け取るので、myapp.activeDataWorkspace.MyDataBase.Techs_SingleOrDefault(CurrentUserName)null を返す値で取得します。UserName は Techs テーブルの主キーです。

UserName にリテラル文字列を使用しても、null が返されます。

4

1 に答える 1

0

それを見つけた!

このフォーラムの投稿に答えがありました。 http://social.msdn.microsoft.com/Forums/vstudio/en-US/dffe99ea-f12f-42e4-be14-7d5d04c2621f/entitytype-dataworkspaceapplicationdatatypesingleordefaultpr-in-javascript

get my tech or end user の呼び出しを Promise オブジェクトでラップする必要がありました。これにより、探していた技術/エンド ユーザーの配列が得られたため、配列の最初の要素を取得する必要がありました。

myapp.activeDataWorkspace.MyDatabase.Techs_SingleOrDefault(CurrentUserName).execute().then(function (result) {
 entity.setTech(result.results[0]);
});

願わくば、これが将来これを試みる人のフラストレーションを和らげるでしょう。

于 2013-08-19T17:46:25.577 に答える