[英]LightSwitch HTML change format format with Button_execute event
[英]Execute Stored Procedure from LightSwitch HTML Application
我是LightSwitch的新手,因此对我的实体和方法工具集不熟悉。
我有一个使用名为BrattlecubesData
的数据BrattlecubesData
的应用程序,其中包含两个视图: TBG_V_TimeLog_Details
和TBG_V_TimeLog_Projects
。 这两个数据集通过ProjectID连接在一起,并用于显示两个不同的浏览屏幕。
我的问题是,我想在ViewDetails屏幕上实现一个按钮,该按钮将从维表(我的应用程序中未包含的维表)中删除当前选择的记录。 我想通过StoredProcedure实现这一点。
我找到了一篇MSDN文章,其中详细介绍了如何执行此操作,但是它们专注于C#和VB,而不是我在HTML应用程序中使用的Javascript。
此链接提供了MSDN C#代码到Javascript的翻译,但是关于我对数据集的声明,我经常遇到错误(错误0x800a138f - JavaScript runtime error: Unable to get property 'ApplicationData' of undefined or null reference
)
然后,我决定尝试使用另一种创建表的方法来执行我的过程,如上面的MSDN文章以及此处所述 。 但是,该技术最终还需要一个按钮,该按钮将我引导至Javascript,在该脚本中,我尝试使用翻译后的代码,导致同样的错误。
按照Eric Erhardt链接从MSDN博客获得的说明,我可以使用无错误的C#代码来调用我的过程,但是又被卡在Button上,该按钮将LineItemID传递给我的表,然后删除过程。 我的按钮的“ Edit Execute Code
代码如下
myapp.ViewRecordDetails.DeleteRecord_execute = function (screen) {
var dws = screen.TBG_V_TimeLog_Detail.dataWorkspace;
var comment = screen.TBG_V_TimeLog_Detail.selectedItem;
var operation =
dws.ApplicationData.DeleteProjectComment_Operations.addNew();
operation.LineItemID = comment.LineItemID;
dws.ApplicationData.saveChanges();
};
运行时,这给了我同样的
0x800a138f
错误,使我0x800a138f
使用'ApplicationData'。 我的解决方案确实具有一个名为ApplicationData的数据源,该数据源具有一个手动创建的表,该表名为DeleteProjectComment_Operations
。 同样,此按钮位于ViewDetails屏幕上。 ViewDetails有一个链接到EditDetails屏幕的按钮,编辑工作如我所愿。如果最好还是将Delete(删除)移到EditDetails屏幕上,那么我很乐意这样做。 或者,如果解决方案是将尺寸表添加到我的解决方案中,请提供有关如何重组我的功能或屏幕的指南
我不知道如何解决需要访问的实体或如何编辑代码以将LineItemID传递给过程的问题。
还建议我可以使用AJAX来实现我的目标,如果这是建议的途径,请向我提供一些说明。
预先谢谢您,希望我能提供足够的细节,但很高兴提供更多信息。
通过使用以下执行代码,应该有可能成功实现Eric Erhardt方法 :
myapp.ViewRecordDetails.DeleteRecord_execute = function (screen) {
var dws = myapp.activeDataWorkspace;
var comment = screen.TBG_V_TimeLog_Detail;
var operation = dws.ApplicationData.DeleteProjectComment_Operations.addNew();
operation.LineItemID = comment.LineItemID;
dws.ApplicationData.saveChanges();
};
与您的代码的唯一区别是对dws分配的更改是:
var dws = screen.TBG_V_TimeLog_Detail.dataWorkspace;
至:
var dws = myapp.activeDataWorkspace;
如果您在此修改后仍然遇到问题,我将扩展saveChanges调用以报告任何错误,如下所示:
dws.ApplicationData.saveChanges().then(null, function (errors) {
errors.forEach(function (error) {
alert(error.message);
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.