繁体   English   中英

从LightSwitch HTML应用程序执行存储过程

[英]Execute Stored Procedure from LightSwitch HTML Application

我是LightSwitch的新手,因此对我的实体和方法工具集不熟悉。

我有一个使用名为BrattlecubesData的数据BrattlecubesData的应用程序,其中包含两个视图: TBG_V_TimeLog_DetailsTBG_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM