gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:58:51 25 4
gpt4 key购买 nike

我是 LightSwitch 新手,因此不熟悉我的工具集 entities and methods .

我有一个应用程序,它使用名为 BrattlecubesData 的数据源,并包含两个 View :TBG_V_TimeLog_DetailsTBG_V_TimeLog_Projects。这两个数据集通过 ProjectID 连接起来,用于显示两个不同的浏览屏幕。

My problem is, I want to implement a button on a ViewDetails screen, which deletes the currently selected record from a dimension table (a dimension table which is not included in my application). I want to achieve this via StoredProcedure.

我找到了an MSDN article详细说明了如何做到这一点,但他们专注于 C# 和 VB,而不是我在 HTML 应用程序中使用的 Javascript。

THIS LINK提供了 MSDN C# 代码到 Javascript 的翻译,但是我在数据集声明方面反复出现错误(错误 0x800a138f - JavaScript 运行时错误:无法获取未定义或空引用的属性“ApplicationData” )

然后,我决定尝试另一种技术,即创建一个表来执行我的过程,如上面的 MSDN 文章和 also here 中所述。 。然而,这种技术最终还需要一个按钮来引导我进入 Javascript,我在其中尝试使用翻译后的代码,但导致了相同的错误。

按照 Eric Erhardt 链接的 MSDN 博客中的说明,我有无错误的 C# 代码来调用我的过程,但再次卡在将 LineItemID 传递到我的表,然后将过程删除的按钮上。我的按钮的编辑执行代码代码如下

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();
};

When run this is giving me the same 0x800a138f error an balking at 'ApplicationData'. My solution does have a dataSource called ApplicationData which has a manually created table called DeleteProjectComment_Operations. Again, this button is located on a ViewDetails screen. The ViewDetails has a button which links to an EditDetails screen, and the Editing works as I want.

If I would be better off moving the Delete to my EditDetails screen, I am happy to do that. Or if the solution is to add the dimension table to my solution, please provide guidance on how to restructure my functions or screens

我不知道如何排查我需要访问哪个实体或如何编辑代码以便将 LineItemID 传递到我的过程。

有人建议我可以使用 AJAX 来实现我的目标,如果这是建议的路线,请向我提供一些有关如何完成的说明。

预先感谢您,我希望我已经提供了足够的详细信息,但我很乐意提供更多信息。

最佳答案

应该可以成功实现Eric Erhardt approach通过使用以下执行代码:

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);
});
});

关于javascript - 从 LightSwitch HTML 应用程序执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34681452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com