我正在Lightswitch中构建一个帮助台票务程序,并且在使用一个请求的功能时遇到了问题。 我被要求为最终用户构建一个适合移动设备的应用程序版本,以便从他们的移动设备提交门票。我用几个屏幕构建了应用程序,并在PreProcess查询中添加了代码,以限制他们只能看到自己的票证。这非常有效。 我遇到的问题是将当前登录的用户指定为新票证的提交者。 我在网上查看了多个指南,所有这些都指向我正在尝试做的事情。 我发现最有希望的是http://social.msdn.microsoft.com/Forums/vstudio/en-US/47832659-4ed3-4a8c-9a62-b3ad46c8e8b4/get-logged-in-employee 通过这种技术,我可以在屏幕上成功显示当前用户。
挑战在于,将Ticket.EndUser字段设置为CurrentUserName字段。我已经在AddEditNewTicket屏幕的创建方法和beforeApplyChanges方法中尝试过它。
我已经在这墙上砸了几天了,有没有人在那里完成过这个?
更新
所以,我想我可能已经找到了问题,只是不确定如何绕过它。在新故障单按钮的执行代码中,我创建了故障单,并使用newTicket.setEndUser()
。此函数将EndUser实体作为参数,因此我使用返回null的myapp.activeDataWorkspace.MyDataBase.Techs_SingleOrDefault(CurrentUserName)
检索它。 UserName是我的Techs表的主键。
即使我为UserName使用文字字符串,它仍然会返回null。
答案 0 :(得分:0)
发现它!
我必须将调用包含在我的技术或最终用户的Promise对象中,这给了我一个我正在寻找的技术/最终用户的数组,所以我必须得到数组的第一个元素。myapp.activeDataWorkspace.MyDatabase.Techs_SingleOrDefault(CurrentUserName).execute().then(function (result) {
entity.setTech(result.results[0]);
});
希望这可以为将来尝试这个的人留下一些挫折感。