0

我正在 Lightswitch 中构建帮助台票务程序,并且在使用一项请求的功能时遇到了问题。我被要求为最终用户构建一个移动友好版本的应用程序,以便从他们的移动设备提交工单。我用几个屏幕构建了这个应用程序,并在 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-dataworkspaceapplicationdatatypessingleordefaultpr-in-javascript

我必须将调用 get my tech or end user 包装在一个 Promise Object 中,它给了我一个包含我正在寻找的技术/最终用户的数组,所以我必须获取数组的第一个元素。

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

希望这将为将来尝试此操作的任何人节省一些挫败感。

于 2013-08-19T17:46:25.577 回答